/*
* *************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
* *************************************************************************************
*/
package com.espertech.esper.view;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import com.espertech.esper.support.view.SupportViewSpecFactory;
import com.espertech.esper.epl.spec.ViewSpec;
public class TestViewSpec extends TestCase
{
public void testEquals() throws Exception
{
final Class[] c_0 = new Class[] { String.class} ;
final String[] s_0_0 = new String[] { "\"symbol\"" };
final String[] s_0_1 = new String[] { "\"price\"" };
final Class[] c_1 = new Class[] { String.class, Long.class} ;
final String[] s_1_0 = new String[] { "\"symbol\"", "1" };
final String[] s_1_1 = new String[] { "\"price\"", "1" };
final String[] s_1_2 = new String[] { "\"price\"", "2" };
final String[] s_1_3 = new String[] { "\"price\"", "1" };
final Class[] c_2 = new Class[] { Boolean.class, String.class, Long.class} ;
final String[] s_2_0 = new String[] { "true", "\"symbol\"", "1" };
final String[] s_2_1 = new String[] { "true", "\"price\"", "1" };
final String[] s_2_2 = new String[] { "true", "\"price\"", "2" };
final String[] s_2_3 = new String[] { "false", "\"price\"", "1" };
Map<Integer, ViewSpec> specs = new HashMap<Integer, ViewSpec>();
specs.put(1, SupportViewSpecFactory.makeSpec("ext", "sort", null, null));
specs.put(2, SupportViewSpecFactory.makeSpec("std", "sum", null, null));
specs.put(3, SupportViewSpecFactory.makeSpec("ext", "sort", null, null));
specs.put(4, SupportViewSpecFactory.makeSpec("ext", "sort", c_0, s_0_0));
specs.put(5, SupportViewSpecFactory.makeSpec("ext", "sort", c_0, s_0_0));
specs.put(6, SupportViewSpecFactory.makeSpec("ext", "sort", c_0, s_0_1));
specs.put(7, SupportViewSpecFactory.makeSpec("ext", "sort", c_1, s_1_0));
specs.put(8, SupportViewSpecFactory.makeSpec("ext", "sort", c_1, s_1_1));
specs.put(9, SupportViewSpecFactory.makeSpec("ext", "sort", c_1, s_1_2));
specs.put(10, SupportViewSpecFactory.makeSpec("ext", "sort", c_1, s_1_3));
specs.put(11, SupportViewSpecFactory.makeSpec("ext", "sort", c_2, s_2_0));
specs.put(12, SupportViewSpecFactory.makeSpec("ext", "sort", c_2, s_2_1));
specs.put(13, SupportViewSpecFactory.makeSpec("ext", "sort", c_2, s_2_2));
specs.put(14, SupportViewSpecFactory.makeSpec("ext", "sort", c_2, s_2_3));
Map<Integer, Integer> matches = new HashMap<Integer, Integer>();
matches.put(1,3);
matches.put(3,1);
matches.put(4,5);
matches.put(5,4);
matches.put(8,10);
matches.put(10,8);
// Compare each against each
for (Map.Entry<Integer, ViewSpec> entryOut : specs.entrySet())
{
for (Map.Entry<Integer, ViewSpec> entryIn : specs.entrySet())
{
boolean result = entryOut.getValue().equals(entryIn.getValue());
if (entryOut == entryIn)
{
assertTrue(result);
continue;
}
String message = "Comparing " + entryIn.getKey() + "=" + entryIn.getValue() + " and " + entryOut.getKey() + "=" + entryOut.getValue();
if ( (matches.containsKey(entryOut.getKey())) &&
(matches.get(entryOut.getKey()) == entryIn.getKey()) )
{
assertTrue(message, result);
}
else
{
assertFalse(message, result);
}
}
}
}
}