Skip to content

Commit

Permalink
Switch to longer prose
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesmudd committed Aug 8, 2024
1 parent 46bc684 commit 895e5ec
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 26 deletions.
39 changes: 20 additions & 19 deletions jhdf/src/main/java/io/jhdf/object/datatype/StringData.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,16 +174,16 @@ public static StringData create(Object data) {
}

private StringData(PaddingType paddingType, Charset charset, int maxLength) {
super(CLASS_ID, maxLength + 1); // +1 for padding
this.paddingType = paddingType;
super(CLASS_ID, maxLength + 1); // +1 for padding
this.paddingType = paddingType;
this.charset = charset;
}

@Override
public ByteBuffer toBuffer() {
Utils.writeIntToBits(paddingType.id, classBits, 0, 4);
Utils.writeIntToBits(1, classBits, 4, 4); // Always UTF8
return super.toBufferBuilder().build();
return super.toBufferBuilder().build();
}

@Override
Expand All @@ -210,13 +210,13 @@ private void writeArrayData(Object data, int[] dims, ByteBuffer buffer, HdfFileC
writeArrayData(newArray, stripLeadingIndex(dims), buffer, hdfFileChannel);
}
} else {
String[] strings = (String[]) data;
for (int i = 0; i < strings.length; i++) {
String str = strings[i];
buffer.put(charset.encode(str))
String[] strings = (String[]) data;
for (int i = 0; i < strings.length; i++) {
String str = strings[i];
buffer.put(charset.encode(str))
.put(NULL)
.position((i+1)*getSize());
}
.position((i + 1) * getSize());
}
buffer.rewind();
hdfFileChannel.write(buffer);
buffer.clear();
Expand Down Expand Up @@ -245,18 +245,19 @@ public ByteBuffer encodeData(Object data) {
}
}

private void encodeDataInternal(Object data, int[] dims, ByteBuffer buffer) {
if (dims.length > 1) {
for (int i = 0; i < dims[0]; i++) {
Object newArray = Array.get(data, i);
encodeDataInternal(newArray, stripLeadingIndex(dims), buffer);
}
} else {
for (String str : (String[]) data) {
buffer.put(this.charset.encode(str)).put(NULL);
private void encodeDataInternal(Object data, int[] dims, ByteBuffer buffer) {
if (dims.length > 1) {
for (int i = 0; i < dims[0]; i++) {
Object newArray = Array.get(data, i);
encodeDataInternal(newArray, stripLeadingIndex(dims), buffer);
}
} else {
for (String str : (String[]) data) {
buffer.put(this.charset.encode(str)).put(NULL);
}
}
}
}

@Override
public String toString() {
return "StringData{" +
Expand Down
41 changes: 34 additions & 7 deletions jhdf/src/test/java/io/jhdf/writing/StringWritingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,40 @@ class StringWritingTest {

private Path tempFile;

private String prose = "Lorem ipsum odor amet, consectetuer adipiscing elit. Phasellus tempus turpis; proin sed est ornare odio. Tempor suspendisse dapibus quis pharetra adipiscing turpis; urna hendrerit. Nam lobortis inceptos ad ante dignissim sociosqu nec consectetur platea. Magnis per velit; posuere nunc id placerat. Dis curabitur sagittis penatibus inceptos molestie massa odio vehicula. Himenaeos inceptos egestas et platea ut condimentum. Senectus facilisi fusce semper elit commodo. Tellus primis ultrices sed risus quis.";
private String prose = "Lorem ipsum odor amet, consectetuer adipiscing elit. Cras auctor facilisi bibendum nibh " +
"felis convallis ridiculus faucibus. Tempor magnis cursus vestibulum ligula turpis; nec quisque. Adipiscing " +
"nam gravida quis vulputate vivamus. Nullam dui curabitur eget dui vulputate eget penatibus posuere. Hac felis" +
" ipsum nam scelerisque etiam porttitor montes? Sociosqu lacinia habitant odio dolor maecenas leo odio. Est in" +
" hac; nullam euismod gravida donec. Integer sit erat torquent turpis lobortis sociosqu duis magna. Primis " +
"nunc varius, accumsan maximus massa arcu egestas tortor. Cursus netus lorem finibus ullamcorper velit semper " +
"cursus. Viverra proin maximus ex scelerisque tellus augue. Suscipit tortor netus laoreet lectus scelerisque " +
"nec. Aliquet arcu et euismod vehicula varius consequat pharetra posuere praesent. Aliquet non neque finibus " +
"rutrum turpis suspendisse libero cursus. Montes integer et urna tortor, mus ligula facilisi nam. Luctus " +
"nascetur sem finibus phasellus nulla lacus praesent montes facilisis. Senectus platea id ante hac mus " +
"eleifend. Nostra sodales aenean; nascetur id ultricies habitant. Malesuada scelerisque nisl vitae rhoncus, a " +
"quisque. Curabitur lacinia consectetur tempor habitant tincidunt mauris. Dui fames nunc taciti proin " +
"suspendisse pulvinar enim ipsum. Venenatis urna justo sagittis sit massa ipsum. Et tristique fringilla ut; " +
"habitasse litora elementum. Inceptos cras mus rhoncus commodo magnis cubilia. Felis potenti nec purus ad nam." +
" Sociosqu rutrum ac condimentum eros at, rhoncus posuere purus. Metus eleifend purus sapien elit mollis " +
"molestie aliquet mollis urna. Eros senectus lacus porta dictumst elit pulvinar. Aphasellus nam natoque ornare" +
" elementum viverra nullam lacus mi. Auctor a varius nascetur; fusce porttitor rutrum venenatis. Sociosqu " +
"cubilia duis efficitur urna eu ridiculus sociosqu at. Sed primis consequat duis leo convallis in arcu ante. " +
"Ex diam suspendisse pellentesque et habitasse suscipit suscipit. Euismod feugiat ullamcorper hac dui sociosqu" +
". Erat lacus justo condimentum justo; ultrices in quisque blandit. Ante mattis maecenas montes adipiscing " +
"class ipsum blandit. Non sapien maximus sed vehicula natoque dignissim posuere? Eu enim nascetur diam mauris " +
"eget finibus nisi pellentesque. Fusce eget elementum aliquet volutpat lorem ullamcorper facilisi quisque. " +
"Facilisis eros iaculis, porta faucibus potenti commodo finibus. Praesent interdum himenaeos eleifend, tempor " +
"ipsum parturient. Parturient habitant arcu vestibulum suspendisse, leo tellus hendrerit primis. Vulputate " +
"conubia proin porttitor condimentum sagittis cubilia velit litora. Sagittis torquent efficitur ultricies " +
"mattis feugiat at. Arcu a sed sagittis ornare id lacinia tellus class. Pretium rutrum ullamcorper, montes " +
"eros laoreet curae. Proin turpis et ultrices; viverra platea ultricies hendrerit. Fusce pretium aliquet eros;" +
" elit maecenas netus primis imperdiet nullam. Nisi magna convallis luctus habitasse congue venenatis? " +
"Sagittis pellentesque fermentum purus mattis himenaeos per himenaeos. Faucibus dis purus nascetur sociosqu " +
"vitae maximus sapien. Eget vehicula eget mattis a nostra montes. Suspendisse blandit congue enim posuere " +
"porta lectus nullam habitasse. Parturient nulla turpis pharetra integer imperdiet. Egestas dapibus senectus " +
"eget, dictumst justo quis faucibus. Ipsum condimentum nullam curae nunc fusce vel ac dis. Montes semper " +
"maximus vel facilisis natoque auctor elementum mollis. Ullamcorper commodo rutrum parturient tincidunt " +
"bibendum; class at risus torquent!";

@Test
@Order(1)
Expand Down Expand Up @@ -72,12 +105,6 @@ void writeStrings() throws Exception {
try (HdfFile hdfFile = new HdfFile(tempFile)) {
Map<String, Node> datasets = hdfFile.getChildren();
assertThat(datasets).hasSize(4);
// Verify scalar
// for (Node node : datasets.values()) {
// Dataset dataset = (Dataset) node;
// assertThat(dataset.isScalar());
// assertThat(dataset.getDimensions()).isEqualTo(ArrayUtils.EMPTY_INT_ARRAY);
// }

// Just check thw whole file is readable
TestAllFilesBase.verifyAttributes(hdfFile);
Expand Down

0 comments on commit 895e5ec

Please sign in to comment.