|
import static org.junit.Assert.*; |
|
|
|
import org.junit.Test; |
|
import org.junit.experimental.runners.Enclosed; |
|
import org.junit.runner.RunWith; |
|
|
|
@RunWith(Enclosed.class) |
|
public class ClosedRangeTest { |
|
|
|
public static class 上端点より下端点が大きい閉区間を作ることはできない { |
|
@Test |
|
public void 下端点5で上端点8の閉区間を作ることはできる() { |
|
// setup |
|
// exercise & verify |
|
new ClosedRange(5, 8); |
|
} |
|
|
|
@Test(expected = RuntimeException.class) |
|
public void 下端点8で上端点5の閉区間を作ることはできない() { |
|
// setup |
|
// exercise & verify |
|
new ClosedRange(8, 5); |
|
} |
|
} |
|
|
|
public static class 整数の閉区間は指定した整数を含むかどうかを判定できる { |
|
@Test |
|
public void 上端点5で下端点8の閉区間に6が含まれることを判定する(){ |
|
// setup |
|
ClosedRange sut = new ClosedRange(5, 8); |
|
|
|
// exercise |
|
boolean actual = sut.contains(6); |
|
|
|
// verify |
|
assertEquals(true, actual); |
|
} |
|
|
|
@Test |
|
public void 上端点5で下端点8の閉区間に4が含まれないことを判定する(){ |
|
// setup |
|
ClosedRange sut = new ClosedRange(5, 8); |
|
|
|
// exercise |
|
boolean actual = sut.contains(4); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
|
|
@Test |
|
public void 上端点5で下端点8の閉区間に9が含まれることを判定する(){ |
|
// setup |
|
ClosedRange sut = new ClosedRange(5, 8); |
|
|
|
// exercise |
|
boolean actual = sut.contains(9); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
} |
|
|
|
public static class 別の閉区間と等価かどうかを判定できる { |
|
@Test |
|
public void 閉区間4_6と閉区間4_6は等価である() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 6); |
|
|
|
// exercise |
|
boolean actual = sut.isEquals(new ClosedRange(4, 6)); |
|
|
|
// verify |
|
assertEquals(true, actual); |
|
} |
|
|
|
@Test |
|
public void 閉区間4_6と閉区間5_8は等価でない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 6); |
|
|
|
// exercise |
|
boolean actual = sut.isEquals(new ClosedRange(5, 8)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
// |
|
@Test |
|
public void 閉区間4_6と閉区間4_8は等価でない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 6); |
|
|
|
// exercise |
|
boolean actual = sut.isEquals(new ClosedRange(4, 8)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
|
|
@Test |
|
public void 閉区間4_6と閉区間5_6は等価でない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 6); |
|
|
|
// exercise |
|
boolean actual = sut.isEquals(new ClosedRange(5, 6)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
} |
|
|
|
|
|
public static class 別の閉区間と完全に含まれるかどうかも判定できる { |
|
@Test |
|
public void 閉区間4_7と閉区間5_6は完全に含まれる() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 7); |
|
|
|
// exercise |
|
boolean actual = sut.containsAll(new ClosedRange(5, 6)); |
|
|
|
// verify |
|
assertEquals(true, actual); |
|
} |
|
|
|
@Test |
|
public void 閉区間4_7と閉区間1_3は完全に含まれない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 7); |
|
|
|
// exercise |
|
boolean actual = sut.containsAll(new ClosedRange(1, 3)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
|
|
@Test |
|
public void 閉区間4_7と閉区間3_5は完全に含まれない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 7); |
|
|
|
// exercise |
|
boolean actual = sut.containsAll(new ClosedRange(3, 5)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
|
|
@Test |
|
public void 閉区間4_7と閉区間6_8は完全に含まれない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 7); |
|
|
|
// exercise |
|
boolean actual = sut.containsAll(new ClosedRange(6, 8)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
|
|
@Test |
|
public void 閉区間4_7と閉区間8_9は完全に含まれない() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 7); |
|
|
|
// exercise |
|
boolean actual = sut.containsAll(new ClosedRange(8, 9)); |
|
|
|
// verify |
|
assertEquals(false, actual); |
|
} |
|
} |
|
|
|
public static class 文字列としても表現できる { |
|
|
|
@Test |
|
public void 文字列としても表現できること() { |
|
// setup |
|
ClosedRange sut = new ClosedRange(4, 7); |
|
|
|
// exercise |
|
String actual = sut.toString(); |
|
|
|
// verify |
|
assertEquals("[4, 7]", actual); |
|
} |
|
} |
|
} |