package org.fenixedu.bennu.core.domain; import pt.ist.fenixframework.test.core.FenixFrameworkRunner; import java.util.Optional; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @RunWith(FenixFrameworkRunner.class) public class BennuTest { @Test public void testStringProperties() { Bennu bennu = Bennu.getInstance(); bennu.setProperty("foo", "bar"); Optional<String> property = bennu.getProperty("foo"); assertTrue(property.isPresent()); assertEquals("bar", property.get()); } @Test public void testNumericProperties() { Bennu bennu = Bennu.getInstance(); bennu.setProperty("foo", 42); Optional<Number> property = bennu.getNumericProperty("foo"); assertTrue(property.isPresent()); assertEquals(42, property.get().intValue()); } @Test public void testBooleanProperties() { Bennu bennu = Bennu.getInstance(); bennu.setProperty("foo", true); Optional<Boolean> property = bennu.getBooleanProperty("foo"); assertTrue(property.isPresent()); assertEquals(true, property.get()); } @Test public void testPropertyReplaced() { Bennu bennu = Bennu.getInstance(); bennu.setProperty("foo", 42); Optional<Number> property = bennu.getNumericProperty("foo"); assertTrue(property.isPresent()); assertEquals(42, property.get().intValue()); bennu.setProperty("foo", "bar"); Optional<String> prop = bennu.getProperty("foo"); assertTrue(prop.isPresent()); assertEquals("bar", prop.get()); } @Test public void testRemoves() { Bennu bennu = Bennu.getInstance(); bennu.setProperty("string", "foo"); bennu.setProperty("number", 42); bennu.setProperty("boolean", true); assertTrue(bennu.getProperty("string").isPresent()); assertTrue(bennu.getProperty("number").isPresent()); assertTrue(bennu.getProperty("boolean").isPresent()); bennu.removeProperty("number"); assertTrue(bennu.getProperty("string").isPresent()); assertFalse(bennu.getProperty("number").isPresent()); assertTrue(bennu.getProperty("boolean").isPresent()); bennu.removeProperty("boolean"); assertTrue(bennu.getProperty("string").isPresent()); assertFalse(bennu.getProperty("number").isPresent()); assertFalse(bennu.getProperty("boolean").isPresent()); bennu.removeProperty("string"); assertFalse(bennu.getProperty("string").isPresent()); assertFalse(bennu.getProperty("number").isPresent()); assertFalse(bennu.getProperty("boolean").isPresent()); } @Test(expected = NullPointerException.class) public void testNPEOnNullString() { Bennu.getInstance().setProperty("xpto", (String) null); } @Test(expected = NullPointerException.class) public void testNPEOnNullNumber() { Bennu.getInstance().setProperty("xpto", (Number) null); } @Test public void testNPEOnNullPropertyName() { try { Bennu.getInstance().setProperty(null, "foo"); fail(); } catch (NullPointerException ignored) {} try { Bennu.getInstance().setProperty(null, 42); fail(); } catch (NullPointerException ignored) {} try { Bennu.getInstance().setProperty(null, true); fail(); } catch (NullPointerException ignored) {} try { Bennu.getInstance().getProperty(null); fail(); } catch (NullPointerException ignored) {} try { Bennu.getInstance().getNumericProperty(null); fail(); } catch (NullPointerException ignored) {} try { Bennu.getInstance().getBooleanProperty(null); fail(); } catch (NullPointerException ignored) {} try { Bennu.getInstance().removeProperty(null); fail(); } catch (NullPointerException ignored) {} } }