lots of exercises in java... from https://github.com/exercism/java

CircularBufferTest.java 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import static org.junit.Assert.assertThat;
  2. import static org.hamcrest.CoreMatchers.is;
  3. import org.junit.Ignore;
  4. import org.junit.Rule;
  5. import org.junit.Test;
  6. import org.junit.rules.ExpectedException;
  7. public class CircularBufferTest {
  8. @Rule
  9. public ExpectedException expectedException = ExpectedException.none();
  10. @Test
  11. public void readingFromEmptyBufferShouldThrowException() throws BufferIOException {
  12. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  13. expectedException.expect(BufferIOException.class);
  14. expectedException.expectMessage("Tried to read from empty buffer");
  15. buffer.read();
  16. }
  17. @Ignore("Remove to run test")
  18. @Test
  19. public void canReadItemJustWritten() throws BufferIOException {
  20. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  21. buffer.write(1);
  22. assertThat(buffer.read(), is(1));
  23. }
  24. @Ignore("Remove to run test")
  25. @Test
  26. public void canReadItemOnlyOnce() throws BufferIOException {
  27. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  28. buffer.write(1);
  29. assertThat(buffer.read(), is(1));
  30. expectedException.expect(BufferIOException.class);
  31. expectedException.expectMessage("Tried to read from empty buffer");
  32. buffer.read();
  33. }
  34. @Ignore("Remove to run test")
  35. @Test
  36. public void readsItemsInOrderWritten() throws BufferIOException {
  37. CircularBuffer<Integer> buffer = new CircularBuffer<>(2);
  38. buffer.write(1);
  39. buffer.write(2);
  40. assertThat(buffer.read(), is(1));
  41. assertThat(buffer.read(), is(2));
  42. }
  43. @Ignore("Remove to run test")
  44. @Test
  45. public void fullBufferCantBeWrittenTo() throws BufferIOException {
  46. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  47. buffer.write(1);
  48. expectedException.expect(BufferIOException.class);
  49. expectedException.expectMessage("Tried to write to full buffer");
  50. buffer.write(2);
  51. }
  52. @Ignore("Remove to run test")
  53. @Test
  54. public void readFreesUpSpaceForWrite() throws BufferIOException {
  55. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  56. buffer.write(1);
  57. assertThat(buffer.read(), is(1));
  58. buffer.write(2);
  59. assertThat(buffer.read(), is(2));
  60. }
  61. @Ignore("Remove to run test")
  62. @Test
  63. public void maintainsReadPositionAcrossWrites() throws BufferIOException {
  64. CircularBuffer<Integer> buffer = new CircularBuffer<>(3);
  65. buffer.write(1);
  66. buffer.write(2);
  67. assertThat(buffer.read(), is(1));
  68. buffer.write(3);
  69. assertThat(buffer.read(), is(2));
  70. assertThat(buffer.read(), is(3));
  71. }
  72. @Ignore("Remove to run test")
  73. @Test
  74. public void cantReadClearedItems() throws BufferIOException {
  75. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  76. buffer.write(1);
  77. buffer.clear();
  78. expectedException.expect(BufferIOException.class);
  79. expectedException.expectMessage("Tried to read from empty buffer");
  80. buffer.read();
  81. }
  82. @Ignore("Remove to run test")
  83. @Test
  84. public void clearFreesUpCapacity() throws BufferIOException {
  85. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  86. buffer.write(1);
  87. buffer.clear();
  88. buffer.write(2);
  89. assertThat(buffer.read(), is(2));
  90. }
  91. @Ignore("Remove to run test")
  92. @Test
  93. public void clearDoesNothingOnEmptyBuffer() throws BufferIOException {
  94. CircularBuffer<Integer> buffer = new CircularBuffer<>(1);
  95. buffer.clear();
  96. buffer.write(1);
  97. assertThat(buffer.read(), is(1));
  98. }
  99. @Ignore("Remove to run test")
  100. @Test
  101. public void overwriteActsLikeWriteOnNonFullBuffer() throws BufferIOException {
  102. CircularBuffer<Integer> buffer = new CircularBuffer<>(2);
  103. buffer.write(1);
  104. buffer.overwrite(2);
  105. assertThat(buffer.read(), is(1));
  106. assertThat(buffer.read(), is(2));
  107. }
  108. @Ignore("Remove to run test")
  109. @Test
  110. public void overwriteRemovesOldestElementOnFullBuffer() throws BufferIOException {
  111. CircularBuffer<Integer> buffer = new CircularBuffer<>(2);
  112. buffer.write(1);
  113. buffer.write(2);
  114. buffer.overwrite(3);
  115. assertThat(buffer.read(), is(2));
  116. assertThat(buffer.read(), is(3));
  117. }
  118. @Ignore("Remove to run test")
  119. @Test
  120. public void overwriteDoesntRemoveAnAlreadyReadElement() throws BufferIOException {
  121. CircularBuffer<Integer> buffer = new CircularBuffer<>(3);
  122. buffer.write(1);
  123. buffer.write(2);
  124. buffer.write(3);
  125. assertThat(buffer.read(), is(1));
  126. buffer.write(4);
  127. buffer.overwrite(5);
  128. assertThat(buffer.read(), is(3));
  129. assertThat(buffer.read(), is(4));
  130. assertThat(buffer.read(), is(5));
  131. }
  132. }