Skip to content

Commit db64be3

Browse files
committed
New test for h5ex_d.
1 parent b2619ad commit db64be3

2 files changed

Lines changed: 30 additions & 22 deletions

File tree

src/main/java/org/hdf5javalib/hdffile/dataobjects/messages/ExternalDataFilesMessage.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ public void writeMessageToByteBuffer(ByteBuffer buffer) {
7171
writeMessageData(buffer);
7272
}
7373

74+
public int getUsedSlots() {
75+
return usedSlots;
76+
}
77+
78+
public List<SlotDefinition> getSlotDefinitions() {
79+
return slotDefinitions;
80+
}
81+
7482
public record SlotDefinition(HdfFixedPoint nameOffset, HdfFixedPoint fileOffset, HdfFixedPoint dataSize) {
7583
@Override
7684
public String toString() {

src/test/java/org/hdf5javalib/examples/h5ex_d/H5exDReadTest.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -117,28 +117,28 @@ void testCompact() throws Exception {
117117
}
118118
}
119119

120-
// @Test
121-
// void testExtern() throws Exception {
122-
// try (SeekableByteChannel channel = ResourceLoader.loadResourceAsChannel("h5ex_d/h5ex_d_extern.h5")) {
123-
// HdfFileReader reader = new HdfFileReader(channel).readFile();
124-
// HdfDataset dataSet = reader.getDataset("/DS1").orElseThrow();
125-
// DataLayoutMessage layout = dataSet.getDataLayoutMessage();
126-
// assertInstanceOf(DataLayoutMessage.ContiguousStorage.class, layout.getDataLayoutStorage());
127-
// DataLayoutMessage.ContiguousStorage cont = (DataLayoutMessage.ContiguousStorage) layout.getDataLayoutStorage();
128-
// assertTrue(cont.getAddress().isUndefined());
129-
// ExternalDataFilesMessage external = dataSet.getHeader().getMessages().stream()
130-
// .filter(m -> m instanceof ExternalDataFilesMessage)
131-
// .map(ExternalDataFilesMessage.class::cast)
132-
// .findFirst().orElse(null);
133-
// assertNotNull(external);
134-
// assertEquals(1, external.getUsedSlots());
135-
// List<ExternalDataFilesMessage.SlotDefinition> slots = external.getSlotDefinitions();
136-
// assertEquals(1, slots.size());
137-
// assertEquals(8, slots.get(0).getNameOffset().getValue());
138-
// assertEquals(0, slots.get(0).getFileOffset());
139-
// assertTrue(slots.get(0).getDataSize().isUndefined());
140-
// }
141-
// }
120+
@Test
121+
void testExtern() throws Exception {
122+
try (SeekableByteChannel channel = ResourceLoader.loadResourceAsChannel("h5ex_d/h5ex_d_extern.h5")) {
123+
HdfFileReader reader = new HdfFileReader(channel).readFile();
124+
HdfDataset dataSet = reader.getDataset("/DS1").orElseThrow();
125+
DataLayoutMessage layout = dataSet.getObjectHeader().findMessageByType(DataLayoutMessage.class).orElseThrow();
126+
assertInstanceOf(DataLayoutMessage.ContiguousStorage.class, layout.getDataLayoutStorage());
127+
DataLayoutMessage.ContiguousStorage cont = (DataLayoutMessage.ContiguousStorage) layout.getDataLayoutStorage();
128+
assertTrue(cont.getDataAddress().isUndefined());
129+
ExternalDataFilesMessage external = dataSet.getObjectHeader().getHeaderMessages().stream()
130+
.filter(m -> m instanceof ExternalDataFilesMessage)
131+
.map(ExternalDataFilesMessage.class::cast)
132+
.findFirst().orElse(null);
133+
assertNotNull(external);
134+
assertEquals(1, external.getUsedSlots());
135+
List<ExternalDataFilesMessage.SlotDefinition> slots = external.getSlotDefinitions();
136+
assertEquals(1, slots.size());
137+
assertEquals(8, slots.get(0).nameOffset().getInstance(Long.class).intValue());
138+
assertEquals(0, slots.get(0).fileOffset().getInstance(Long.class).intValue());
139+
assertTrue(slots.get(0).dataSize().isUndefined());
140+
}
141+
}
142142

143143
@Test
144144
void testFillval() throws Exception {

0 commit comments

Comments
 (0)