public int[] originalLineEndOffsets() { checkMetadata(); Preconditions.checkState(metadata.originalLineEndOffsets() != null, "InputFile is not properly initialized."); Preconditions.checkState(metadata.originalLineEndOffsets().length == metadata.lines(), "InputFile is not properly initialized. 'originalLineEndOffsets' property length should be equal to 'lines'"); return metadata.originalLineEndOffsets(); }
@Test public void windows_without_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\r\nbar\r\nbaz", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(3); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 5, 10); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 8, 13); assertThat(metadata.isEmpty()).isFalse(); }
@Test public void mac_with_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\rbar\rbaz\r", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(4); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz\n")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 8, 12); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 7, 11, 12); }
@Test public void start_with_newline() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "\nfoo\nbar\r\nbaz", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(4); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("\nfoo\nbar\nbaz")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 1, 5, 10); assertThat(metadata.originalLineEndOffsets()).containsOnly(0, 4, 8, 13); }
@Test public void unix_without_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\nbar\nbaz", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(3); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 8); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 7, 11); assertThat(metadata.isEmpty()).isFalse(); }
@Test public void mac_without_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\rbar\rbaz", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(3); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 8); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 7, 11); }
@Test public void mix_of_newlines_with_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\nbar\r\nbaz\n", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(4); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz\n")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 9, 13); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 7, 12, 13); }
@Test public void mix_of_newlines_without_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\nbar\r\nbaz", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(3); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 9); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 7, 12); }
@Test public void testRoundtrip() { Metadata metadata = new Metadata(10, 20, "hash", new int[] {1, 3}, new int[] {2, 4}, 5); assertThat(metadata.isEmpty()).isFalse(); assertThat(metadata.lines()).isEqualTo(10); assertThat(metadata.nonBlankLines()).isEqualTo(20); assertThat(metadata.originalLineStartOffsets()).isEqualTo(new int[] {1, 3}); assertThat(metadata.originalLineEndOffsets()).isEqualTo(new int[] {2, 4}); assertThat(metadata.lastValidOffset()).isEqualTo(5); assertThat(metadata.hash()).isEqualTo("hash"); } }
@Test public void unix_with_latest_eol() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\nbar\nbaz\n", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(4); assertThat(metadata.nonBlankLines()).isEqualTo(3); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\nbar\nbaz\n")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 8, 12); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 7, 11, 12); }
@Test public void several_new_lines() throws Exception { File tempFile = temp.newFile(); FileUtils.write(tempFile, "foo\n\n\nbar", StandardCharsets.UTF_8, true); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(4); assertThat(metadata.nonBlankLines()).isEqualTo(2); assertThat(metadata.hash()).isEqualTo(md5Hex("foo\n\n\nbar")); assertThat(metadata.originalLineStartOffsets()).containsOnly(0, 4, 5, 6); assertThat(metadata.originalLineEndOffsets()).containsOnly(3, 4, 5, 9); }
@Test public void empty_file() throws Exception { File tempFile = temp.newFile(); FileUtils.touch(tempFile); Metadata metadata = new FileMetadata().readMetadata(new FileInputStream(tempFile), StandardCharsets.UTF_8, tempFile.getName()); assertThat(metadata.lines()).isEqualTo(1); assertThat(metadata.nonBlankLines()).isEqualTo(0); assertThat(metadata.hash()).isNotEmpty(); assertThat(metadata.originalLineStartOffsets()).containsOnly(0); assertThat(metadata.originalLineEndOffsets()).containsOnly(0); assertThat(metadata.isEmpty()).isTrue(); }
public TestInputFileBuilder setMetadata(Metadata metadata) { this.setLines(metadata.lines()); this.setLastValidOffset(metadata.lastValidOffset()); this.setNonBlankLines(metadata.nonBlankLines()); this.setHash(metadata.hash()); this.setOriginalLineStartOffsets(metadata.originalLineStartOffsets()); this.setOriginalLineEndOffsets(metadata.originalLineEndOffsets()); return this; }
public int[] originalLineEndOffsets() { checkMetadata(); Preconditions.checkState(metadata.originalLineEndOffsets() != null, "InputFile is not properly initialized."); Preconditions.checkState(metadata.originalLineEndOffsets().length == metadata.lines(), "InputFile is not properly initialized. 'originalLineEndOffsets' property length should be equal to 'lines'"); return metadata.originalLineEndOffsets(); }
public TestInputFileBuilder setMetadata(Metadata metadata) { this.setLines(metadata.lines()); this.setLastValidOffset(metadata.lastValidOffset()); this.setNonBlankLines(metadata.nonBlankLines()); this.setHash(metadata.hash()); this.setOriginalLineStartOffsets(metadata.originalLineStartOffsets()); this.setOriginalLineEndOffsets(metadata.originalLineEndOffsets()); return this; }