/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.core.index; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * TestWordEntryComparator */ public class TestWordEntryComparator extends TestCase { private static char DELIMITER = IndexConstants.RECORD_STRING.RECORD_DELIMITER; public static String ENTRY1 = "C"+DELIMITER+"SampleRelational/SampleRelationalSchema/MyFirstTable/A"+DELIMITER+" "+DELIMITER+"mmuuid:c67e8dc1-ee4f-1ec5-8100-ad5512432c75"+DELIMITER+"11001100|1|0|0|0|0| | | |VARCHAR| |\\MyPrj\\SampleRelational.mmm|"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ public static String ENTRY2 = "C"+DELIMITER+"SampleRelational/SampleRelationalSchema/MyFirstTable/B"+DELIMITER+" "+DELIMITER+"mmuuid:c67e8dc1-ee4f-1ec5-8100-ad5512432c75"+DELIMITER+"11001100|1|0|0|0|0| | | |VARCHAR| |\\MyPrj\\SampleRelational.mmm|"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ public static String ENTRY3 = "C"+DELIMITER+"SampleRelational/SampleRelationalSchema/MySecondTable/A"+DELIMITER+" "+DELIMITER+"mmuuid:c67e8dc1-ee4f-1ec5-8100-ad5512432c75"+DELIMITER+"11001100|1|0|0|0|0| | | |VARCHAR| |\\MyPrj\\SampleRelational.mmm|"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ public static String ENTRY4 = "C"+DELIMITER+"SampleRelational/SampleRelationalSchema/MySecondTable/B"+DELIMITER+" "+DELIMITER+"mmuuid:c67e8dc1-ee4f-1ec5-8100-ad5512432c75"+DELIMITER+"11001100|1|0|0|0|0| | | |VARCHAR| |\\MyPrj\\SampleRelational.mmm|"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ public static String ENTRY5 = "C"+DELIMITER+"SampleRelational/SampleRelationalSchema/MyThirdTable/A"+DELIMITER+" "+DELIMITER+"mmuuid:c67e8dc1-ee4f-1ec5-8100-ad5512432c75"+DELIMITER+"11001100|1|0|0|0|0| | | |VARCHAR| |\\MyPrj\\SampleRelational.mmm|"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ // ------------------------------------------------- // Variables initialized during one-time startup ... // ------------------------------------------------- // --------------------------------------- // Variables initialized for each test ... // --------------------------------------- List wordEntries = new ArrayList(); // ========================================================================= // F R A M E W O R K // ========================================================================= /** * Constructor for TestCreateIndexFile. * @param name */ public TestWordEntryComparator(String name) { super(name); } // ========================================================================= // T E S T C O N T R O L // ========================================================================= /** * Construct the test suite, which uses a one-time setup call * and a one-time tear-down call. */ public static Test suite() { TestSuite suite = new TestSuite("TestWordEntryComparator"); //$NON-NLS-1$ suite.addTestSuite(TestWordEntryComparator.class); return new TestSetup(suite) { // junit.extensions package // One-time setup and teardown @Override public void setUp() throws Exception { oneTimeSetUp(); } @Override public void tearDown() { oneTimeTearDown(); } }; } // ========================================================================= // M A I N // ========================================================================= public static void main(String args[]) { junit.textui.TestRunner.run(suite()); System.exit(0); } // ========================================================================= // S E T U P A N D T E A R D O W N // ========================================================================= @Override protected void setUp() throws Exception { } @Override protected void tearDown() throws Exception { if(wordEntries != null) { wordEntries.clear(); } } public static void oneTimeSetUp() {} public static void oneTimeTearDown() {} // ========================================================================= // H E L P E R M E T H O D S // ========================================================================= /* * Create a WordEntry for the specified string */ public WordEntry helpCreateWordEntry(final String word) { assertNotNull(word); final WordEntry entry = new WordEntry(word.toCharArray()); assertNotNull(entry); return entry; } /* * Create a WordEntry for every line in the specified file */ public WordEntry[] helpCreateWordEntries(final File indexFile) { assertNotNull(indexFile); assertTrue(indexFile.exists()); List entries = new ArrayList(); FileReader fr = null; BufferedReader br = null; try { fr = new FileReader(indexFile); br = new BufferedReader(fr); System.out.println("Reading "+indexFile); //$NON-NLS-1$ String record = null; while ((record = br.readLine()) != null) { String trimmedRecord = record.trim(); WordEntry entry = helpCreateWordEntry(trimmedRecord); // System.out.println(" Creating WordEntry "+entry); //$NON-NLS-1$ entries.add(entry); } } catch (Throwable t) { t.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (fr != null) { fr.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return (WordEntry[]) entries.toArray(new WordEntry[entries.size()]); } public void testComparator1() { wordEntries.add(helpCreateWordEntry(ENTRY1)); wordEntries.add(helpCreateWordEntry(ENTRY2)); wordEntries.add(helpCreateWordEntry(ENTRY3)); wordEntries.add(helpCreateWordEntry(ENTRY4)); wordEntries.add(helpCreateWordEntry(ENTRY5)); Collections.shuffle(wordEntries); WordEntryComparator comparator = new WordEntryComparator(); Collections.sort(wordEntries, comparator); WordEntry entry1 = (WordEntry) wordEntries.get(0); WordEntry entry2 = (WordEntry) wordEntries.get(1); WordEntry entry3 = (WordEntry) wordEntries.get(2); WordEntry entry4 = (WordEntry) wordEntries.get(3); WordEntry entry5 = (WordEntry) wordEntries.get(4); assertEquals(ENTRY1, String.valueOf(entry1.getWord())); assertEquals(ENTRY2, String.valueOf(entry2.getWord())); assertEquals(ENTRY3, String.valueOf(entry3.getWord())); assertEquals(ENTRY4, String.valueOf(entry4.getWord())); assertEquals(ENTRY5, String.valueOf(entry5.getWord())); } public void testComparator2() { wordEntries.add(helpCreateWordEntry(ENTRY1)); wordEntries.add(helpCreateWordEntry(ENTRY1)); wordEntries.add(helpCreateWordEntry(ENTRY2)); wordEntries.add(helpCreateWordEntry(ENTRY3)); wordEntries.add(helpCreateWordEntry(ENTRY3)); Collections.shuffle(wordEntries); WordEntryComparator comparator = new WordEntryComparator(); Collections.sort(wordEntries, comparator); WordEntry entry1 = (WordEntry) wordEntries.get(0); WordEntry entry2 = (WordEntry) wordEntries.get(1); WordEntry entry3 = (WordEntry) wordEntries.get(2); WordEntry entry4 = (WordEntry) wordEntries.get(3); WordEntry entry5 = (WordEntry) wordEntries.get(4); assertEquals(ENTRY1, String.valueOf(entry1.getWord())); assertEquals(ENTRY1, String.valueOf(entry2.getWord())); assertEquals(ENTRY2, String.valueOf(entry3.getWord())); assertEquals(ENTRY3, String.valueOf(entry4.getWord())); assertEquals(ENTRY3, String.valueOf(entry5.getWord())); } }