/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.client.plan;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
/**
*/
public class TestPlanNode {
public static PlanNode example1() {
PlanNode map = new PlanNode("x"); //$NON-NLS-1$
map.addProperty("test", ""); //$NON-NLS-1$ //$NON-NLS-2$
map.addProperty("null", (String)null); //$NON-NLS-1$
map.addProperty("string", "string"); //$NON-NLS-1$ //$NON-NLS-2$
List<String> list1 = new ArrayList<String>();
list1.add("item1"); //$NON-NLS-1$
list1.add("item2"); //$NON-NLS-1$
list1.add("item3"); //$NON-NLS-1$
map.addProperty("list<string>", list1); //$NON-NLS-1$
PlanNode child = new PlanNode("y"); //$NON-NLS-1$
List<String> outputCols = new ArrayList<String>();
outputCols.add("Name (string)"); //$NON-NLS-1$
outputCols.add("Year (integer)"); //$NON-NLS-1$
child.addProperty("outputCols", outputCols); //$NON-NLS-1$
child.addProperty("Join Type", "INNER JOIN"); //$NON-NLS-1$ //$NON-NLS-2$
List<String> crits = new ArrayList<String>();
crits.add("Item.ID = History.ID"); //$NON-NLS-1$
child.addProperty("Criteria", crits); //$NON-NLS-1$
child.addProperty("Other", new ArrayList<String>()); //$NON-NLS-1$
map.addProperty("child", child); //$NON-NLS-1$
return map;
}
@Test public void testXml() throws Exception {
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><node name=\"x\"><property name=\"test\"><value></value></property><property name=\"null\"></property><property name=\"string\"><value>string</value></property><property name=\"list<string>\"><value>item1</value><value>item2</value><value>item3</value></property><property name=\"child\"><node name=\"y\"><property name=\"outputCols\"><value>Name (string)</value><value>Year (integer)</value></property><property name=\"Join Type\"><value>INNER JOIN</value></property><property name=\"Criteria\"><value>Item.ID = History.ID</value></property><property name=\"Other\"></property></node></property></node>", example1().toXml()); //$NON-NLS-1$
}
@Test public void testXmlRoundtrip() throws Exception {
String planString = example1().toXml();
PlanNode planNode = PlanNode.fromXml(planString);
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><node name=\"x\"><property name=\"test\"><value></value></property><property name=\"null\"></property><property name=\"string\"><value>string</value></property><property name=\"list<string>\"><value>item1</value><value>item2</value><value>item3</value></property><property name=\"child\"><node name=\"y\"><property name=\"outputCols\"><value>Name (string)</value><value>Year (integer)</value></property><property name=\"Join Type\"><value>INNER JOIN</value></property><property name=\"Criteria\"><value>Item.ID = History.ID</value></property><property name=\"Other\"></property></node></property></node>", planNode.toXml()); //$NON-NLS-1$
}
@Test public void testText() throws Exception {
assertEquals("x\n + test:\n + null\n + string:string\n + list<string>:\n 0: item1\n 1: item2\n 2: item3\n + child:\n y\n + outputCols:\n 0: Name (string)\n 1: Year (integer)\n + Join Type:INNER JOIN\n + Criteria:Item.ID = History.ID\n + Other\n", example1().toString()); //$NON-NLS-1$
}
}