// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net> // This software is released under the Apache License 2.0. // The license text is at http://www.apache.org/licenses/LICENSE-2.0 package fi.jumi.core.api; import org.junit.*; import org.junit.rules.ExpectedException; import static org.hamcrest.Matchers.is; import static org.junit.Assert.*; public class RunIdTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void is_a_value_object() { RunId id1a = new RunId(1); RunId id1b = new RunId(1); RunId id2 = new RunId(2); assertTrue("equals: itself", id1a.equals(id1a)); assertTrue("equals: same value", id1a.equals(id1b)); assertFalse("equals: different value", id1a.equals(id2)); assertFalse("equals: null", id1a.equals(null)); assertFalse("equals: other class", id1a.equals(new Object())); assertTrue("hashCode: same value", id1a.hashCode() == id1b.hashCode()); assertFalse("hashCode: different value", id1a.hashCode() == id2.hashCode()); } @Test public void has_toString() { assertThat(new RunId(1).toString(), is("RunId(1)")); assertThat(new RunId(2).toString(), is("RunId(2)")); } @Test public void the_id_must_be_1_or_greater() { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("id must be 1 or greater, but was: 0"); new RunId(0); } @Test public void numerical_value_can_be_queried() { assertThat(new RunId(1).toInt(), is(1)); assertThat(new RunId(2).toInt(), is(2)); } }