package com.taobao.tddl.rule; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import com.taobao.tddl.rule.model.sqljep.Comparative; import com.taobao.tddl.rule.model.sqljep.ComparativeAND; import com.taobao.tddl.rule.model.sqljep.ComparativeOR; public class TestUtils { public static final int GreaterThan = Comparative.GreaterThan; public static final int GreaterThanOrEqual = Comparative.GreaterThanOrEqual; public static final int Equivalent = Comparative.Equivalent; public static final int NotEquivalent = Comparative.NotEquivalent; public static final int LessThan = Comparative.LessThan; public static final int LessThanOrEqual = Comparative.LessThanOrEqual; public static Comparative gor(Comparative parent, Comparative target) { if (parent == null) { ComparativeOR or = new ComparativeOR(); or.addComparative(target); return or; } else { if (parent instanceof ComparativeOR) { ((ComparativeOR) parent).addComparative(target); return parent; } else { ComparativeOR or = new ComparativeOR(); or.addComparative(parent); or.addComparative(target); return or; } } } public static Comparative gand(Comparative parent, Comparative target) { if (parent == null) { ComparativeAND and = new ComparativeAND(); and.addComparative(target); return and; } else { if (parent instanceof ComparativeAND) { ComparativeAND and = ((ComparativeAND) parent); if (and.getList().size() == 1) { and.addComparative(target); return and; } else { ComparativeAND andNew = new ComparativeAND(); andNew.addComparative(and); andNew.addComparative(target); return andNew; } } else { ComparativeAND and = new ComparativeAND(); and.addComparative(parent); and.addComparative(target); return and; } } } public static Comparative gcomp(Comparable comp, int sym) { return new Comparative(sym, comp); } public static void testSet(Object[] target, Set<? extends Object> beTestedSet) { assertEquals(target.length, beTestedSet.size()); int index = 0; for (Object obj : target) { assertTrue("index:" + String.valueOf(index) + "-value:" + obj + "|set:" + beTestedSet, beTestedSet.contains(obj)); index++; } } public static void testSetDate(Date[] target, Set<Object> beTestedSet) { assertEquals(target.length, beTestedSet.size()); Set<String> dateStr = new HashSet<String>(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); for (Object date : beTestedSet) { String formated = format.format(((Date) date)); dateStr.add(formated); } Set<String> targetDateString = new HashSet<String>(); for (Date date : target) { String formated = format.format(((Date) date)); targetDateString.add(formated); } int index = 0; Iterator<String> strs = dateStr.iterator(); while (strs.hasNext()) { boolean isTrue = false; StringBuilder sb = new StringBuilder(); String str = strs.next(); sb.append(str).append("|"); for (String obj : targetDateString) { if (str.trim().equals(obj.trim())) { strs.remove(); isTrue = true; } } assertTrue("index:" + String.valueOf(index) + "-value:" + targetDateString + " target:" + sb.toString(), isTrue); index++; } } }