فهرست منبع

Add DurationTest.

Sam Jaffe 5 سال پیش
والد
کامیت
7178035386
1فایلهای تغییر یافته به همراه72 افزوده شده و 0 حذف شده
  1. 72 0
      src/test/java/org/leumasjaffe/recipe/model/DurationTest.java

+ 72 - 0
src/test/java/org/leumasjaffe/recipe/model/DurationTest.java

@@ -0,0 +1,72 @@
+package org.leumasjaffe.recipe.model;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import static org.hamcrest.MatcherAssert.*;
+import static org.hamcrest.core.IsNot.*;
+import static org.hamcrest.core.StringContains.*;
+import static org.hamcrest.core.StringStartsWith.*;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+
+class DurationTest {
+
+	@Test
+	void testPlusConvertsToLowestUnit() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, false, 10, 20);
+		final Duration inMin = new Duration(Duration.Display.MINUTES, false, 60, 120);
+		
+		assertEquals(inSec.plus(inMin).getDisplayAs(), Duration.Display.SECONDS);
+		assertEquals(inMin.plus(inSec).getDisplayAs(), Duration.Display.SECONDS);
+	}
+
+	@Test
+	void testPlusWillCarryOverApproximation() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, true, 10, 20);
+		final Duration inMin = new Duration(Duration.Display.MINUTES, false, 60, 120);
+		
+		assertEquals(inSec.plus(inMin).isApproximate(), true);
+		assertEquals(inMin.plus(inSec).isApproximate(), true);
+	}
+	
+	@Test
+	void testToStringApproxAddsTilde() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, true, 0, 0);
+		assertThat(inSec.toString(), startsWith("~"));
+	}
+	
+	@Test
+	void testToStringNonApproxDoesNotHaveTilde() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, false, 0, 0);
+		assertThat(inSec.toString(), not(containsString("~")));
+	}
+	
+	@Test
+	void testNonZeroMinProducesRange() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, false, 10, 0);
+		assertThat(inSec.toString(), containsString("-"));
+	}
+	
+	@Test
+	void testZeroMinProducesSingleNumber() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, false, 0, 0);
+		assertThat(inSec.toString(), not(containsString("-")));
+	}
+	
+	@ParameterizedTest
+	@EnumSource(Duration.Display.class)
+	void testUnitStringIsIncludedInOutput(final Duration.Display as) {
+		final Duration dur = new Duration(as, false, 0, 0);
+		assertThat(dur.toString(), containsString(as.abbreviation));
+	}
+	
+	@Test
+	void testUnitControlsOutputScale() {
+		final Duration inSec = new Duration(Duration.Display.SECONDS, false, 10, 20);
+		final Duration inMin = new Duration(Duration.Display.MINUTES, false, 10, 20);
+		assertEquals(inSec.toString(), "10 - 20 s");
+		assertEquals(inMin.toString(), "0 - 0 min");
+	}
+}