// This file is copyrighted and is part of nzdis-oql package. // See the file LICENSE for copyright information and the terms and conditions for copying, distributing and modifications of nzdis-oql package. // @copyright@ package nzdis.lang.oql; /**/ import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.Test; import nzdis.lang.oql.node.Node; /** * Test utility for Query Analyser. * * @author Mariusz Nowostawski * @version @version@ $Revision: 1.1 $ */ public class TestQueryAnalyser extends TestCase { /**/ public TestQueryAnalyser(String name) { super(name); } /** Setup. */ protected void setUp(){ } public void testSimple(){ Node node = null; try{ node = TreeBuilder.getNode("select p from Mama where p.name = $name", true); }catch(Exception e){ fail(e.getMessage()); } QueryAnalyser a = new QueryAnalyser(); a.analyse(node); String[] list = a.getVariableList(); assert(list.length == 1); assertEquals(list[0], "name"); } public void testSimpleWithRepetition(){ Node node = null; try{ node = TreeBuilder.getNode("select p from Mama where p.name = $name and p.surname != $name", true); }catch(Exception e){ fail(e.getMessage()); } QueryAnalyser a = new QueryAnalyser(); a.analyse(node); String[] list = a.getVariableList(); assert(list.length == 1); assertEquals(list[0], "name"); } public void testComplex(){ Node node = null; try{ node = TreeBuilder.getNode("select p from Mama where p.name = $name and p.surname = $surname", true); }catch(Exception e){ fail(e.getMessage()); } QueryAnalyser a = new QueryAnalyser(); a.analyse(node); String[] list = a.getVariableList(); assert(list.length == 2); assert( (list[0].equals("name") && list[1].equals("surname")) || (list[1].equals("name") && list[0].equals("surname"))); } public void testComplexWithRepetition(){ Node node = null; try{ node = TreeBuilder.getNode( "select p from Mama where p.name = $name and p.surname = $surname and $name < $surname", true); }catch(Exception e){ fail(e.getMessage()); } QueryAnalyser a = new QueryAnalyser(); a.analyse(node); String[] list = a.getVariableList(); assert(list.length == 2); assert( (list[0].equals("name") && list[1].equals("surname")) || (list[1].equals("name") && list[0].equals("surname"))); } public void testStructProjection(){ Node node = null; try{ node = TreeBuilder.getNode( "select struct(name: p.name, surname: p.surname) from Mama p where p.age < 20 ", true); }catch(Exception e){ fail(e.getMessage()); } QueryAnalyser a = new QueryAnalyser(); a.analyse(node); String[] list = a.getProjectionNames(); assert(list.length == 2); assert( (list[0].equals("name") && list[1].equals("surname")) || (list[1].equals("name") && list[0].equals("surname"))); } /** * Test suite for OQL grammar. */ public static Test suite() { return new TestSuite(TestQueryAnalyser.class); } } // TestQueryAnalyser //////////////////// end of file ////////////////////