/* Copyright 2015 CrushPaper.com. This file is part of CrushPaper. CrushPaper is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU Affero General Public License as published by the Free Software Foundation. CrushPaper 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with CrushPaper. If not, see <http://www.gnu.org/licenses/>. */ package com.crushpaper; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; /** Tests the TestEntry class. */ public class TestEntryTest { @Test public void test() { final TestEntry oneEntry = new TestEntry("1"); final TestEntry twoEntry = new TestEntry("2"); final TestEntry threeEntry = new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry("5"), }); final TestEntry[] rootEntries = new TestEntry[] { oneEntry, twoEntry, threeEntry }; final TestEntrySet entries = new TestEntrySet(rootEntries); assertTrue("Simple case of validity", entries.areValuesValid()); assertTrue("Check caching", entries.areValuesValid()); assertFalse(entries.areIdsValid()); assertFalse(entries.areIdsValid()); assertEquals(null, entries.getRootEntryByValue("0")); assertEquals(null, entries.getRootEntryByValue("4")); assertEquals(null, entries.getRootEntryByValue("5")); assertEquals(oneEntry, entries.getRootEntryByValue("1")); assertEquals(twoEntry, entries.getRootEntryByValue("2")); assertEquals(threeEntry, entries.getRootEntryByValue("3")); assertEquals(null, entries.getRootEntryByValue(null)); assertTrue(entries.compare(entries)); assertTrue(entries.getRootEntries() == rootEntries); } @Test public void test2() { final TestEntrySet entries = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry("1"), }) }); assertFalse("A duplicate value", entries.areValuesValid()); assertTrue(entries.compare(entries)); } @Test public void test3() { final TestEntrySet entries = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), null, }) }); assertFalse("A null entry", entries.areValuesValid()); assertTrue(entries.compare(entries)); } @Test public void test4() { final TestEntrySet entries = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry(null) }) }); assertFalse("A null value", entries.areValuesValid()); assertTrue(entries.compare(entries)); } @Test public void test5() { final TestEntry nullValueEntry = new TestEntry(null); final TestEntrySet entries = new TestEntrySet( new TestEntry[] { nullValueEntry }); assertEquals(nullValueEntry, entries.getRootEntryByValue(null)); assertFalse("A null value", entries.areValuesValid()); assertTrue(entries.compare(entries)); } @Test public void test6() { final TestEntrySet entries1 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry("5"), }) }); final TestEntrySet entries2 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry("5"), }) }); assertTrue(entries1.areValuesValid()); assertTrue(entries2.areValuesValid()); assertTrue(entries1.compare(entries2)); assertTrue(entries2.compare(entries1)); } @Test public void test7() { final TestEntrySet entries1 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("5"), }) }); final TestEntrySet entries2 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4") }) }); assertTrue(entries1.areValuesValid()); assertTrue(entries2.areValuesValid()); assertTrue(entries1.compare(entries1)); assertTrue(entries2.compare(entries2)); assertFalse(entries1.compare(entries2)); assertFalse(entries2.compare(entries1)); } @Test public void test8() { final TestEntrySet entries1 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4") }) }); final TestEntrySet entries2 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry("5") }) }); assertTrue(entries1.areValuesValid()); assertTrue(entries2.areValuesValid()); assertTrue(entries1.compare(entries1)); assertTrue(entries2.compare(entries2)); assertFalse(entries1.compare(entries2)); assertFalse(entries2.compare(entries1)); } @Test public void test9() { final TestEntrySet entries1 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { null }) }); final TestEntrySet entries2 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { null }) }); assertFalse(entries1.areValuesValid()); assertFalse(entries2.areValuesValid()); assertTrue(entries1.compare(entries2)); assertTrue(entries2.compare(entries1)); } @Test public void test10() { final TestEntrySet entries1 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry(null) }) }); final TestEntrySet entries2 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry(null) }) }); assertFalse(entries1.areValuesValid()); assertFalse(entries2.areValuesValid()); assertTrue(entries1.compare(entries2)); assertTrue(entries2.compare(entries1)); } @Test public void test11() { final TestEntrySet entries1 = new TestEntrySet(null); assertTrue(entries1.getRootEntries() == null); assertTrue(entries1.getRootEntryByValue("1") == null); final TestEntrySet entries2 = new TestEntrySet( new TestEntry[] { new TestEntry("1") }); assertFalse(entries1.areValuesValid()); assertTrue(entries2.areValuesValid()); assertTrue(entries2.compare(entries2)); assertTrue(entries1.compare(entries1)); assertFalse(entries1.compare(entries2)); assertFalse(entries2.compare(entries1)); } @Test public void test12() { final TestEntrySet entries1 = new TestEntrySet( new TestEntry[] { new TestEntry("1") }); final TestEntrySet entries2 = new TestEntrySet( new TestEntry[] { new TestEntry("2") }); assertTrue(entries1.areValuesValid()); assertTrue(entries2.areValuesValid()); assertTrue(entries2.compare(entries2)); assertTrue(entries1.compare(entries1)); assertFalse(entries1.compare(entries2)); assertFalse(entries2.compare(entries1)); } @Test public void test13() { final TestEntrySet entries1 = new TestEntrySet( new TestEntry[] { new TestEntry("1") }); final TestEntrySet entries2 = new TestEntrySet(new TestEntry[] { new TestEntry("1"), new TestEntry("2") }); assertTrue(entries1.areValuesValid()); assertTrue(entries2.areValuesValid()); assertTrue(entries2.compare(entries2)); assertTrue(entries1.compare(entries1)); assertFalse(entries1.compare(entries2)); assertFalse(entries2.compare(entries1)); } @Test public void test14() { final TestEntrySet entries1 = new TestEntrySet(new TestEntry[] { null }); final TestEntrySet entries2 = new TestEntrySet( new TestEntry[] { new TestEntry(null) }); assertFalse(entries1.areValuesValid()); assertFalse(entries2.areValuesValid()); assertTrue(entries2.compare(entries2)); assertTrue(entries1.compare(entries1)); assertFalse(entries1.compare(entries2)); assertFalse(entries2.compare(entries1)); } }