public void testWriteIntWithPosition()

in computer-test/src/main/java/org/apache/hugegraph/computer/core/io/BufferedStreamTest.java [92:147]


    public void testWriteIntWithPosition() throws IOException {
        File file = createTempFile();
        try {
            try (BufferedStreamOutput output = createOutput(file)) {
                // 256 bytes
                for (int i = 0; i < 64; i++) {
                    output.writeInt(i);
                }
                // Write at start point of current buffer
                output.writeFixedInt(128, 1);
                // Write at middle point of current buffer
                output.writeFixedInt(200, 2);
                // Write at end point of current buffer
                output.writeFixedInt(252, 3);
                // Write at previous buffer
                Assert.assertThrows(IOException.class, () -> {
                    output.writeFixedInt(100, 4);
                }, e -> {
                    Assert.assertContains("underflows the start position",
                                          e.getMessage());
                });
                // Write at next buffer
                Assert.assertThrows(IOException.class, () -> {
                    output.writeFixedInt(256, 5);
                }, e -> {
                    Assert.assertContains("overflows the write position",
                                          e.getMessage());
                });

                output.writeInt(Integer.MAX_VALUE);
                output.writeInt(Integer.MIN_VALUE);
            }
            try (BufferedStreamInput input = createInput(file)) {
                for (int i = 0; i < 64; i++) {
                    int position = i * 4;
                    switch (position) {
                        case 128:
                            Assert.assertEquals(1, input.readInt());
                            break;
                        case 200:
                            Assert.assertEquals(2, input.readInt());
                            break;
                        case 252:
                            Assert.assertEquals(3, input.readInt());
                            break;
                        default:
                            Assert.assertEquals(i, input.readInt());
                    }
                }
                Assert.assertEquals(Integer.MAX_VALUE, input.readInt());
                Assert.assertEquals(Integer.MIN_VALUE, input.readInt());
            }
        } finally {
            FileUtils.deleteQuietly(file);
        }
    }