diff --git a/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileBinaryTest.kt b/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileBinaryTest.kt index d8c7c67a..8a31346a 100644 --- a/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileBinaryTest.kt +++ b/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileBinaryTest.kt @@ -4,6 +4,7 @@ import hep.dataforge.context.Global import java.nio.file.Files import kotlin.test.Test import kotlin.test.assertEquals +import kotlin.test.assertTrue class FileBinaryTest { val envelope = Envelope { @@ -53,4 +54,30 @@ class FileBinaryTest { assertEquals(binary.size.toInt(), binary.toBytes().size) } + @Test + fun testMultyPartFileData() { + val envelopeList = (0..5).map { + val dataFile = Files.createTempFile("dataforge_test_bin_$it", ".bin") + dataFile.toFile().writeText(DoubleArray(80000) { it.toDouble() }.joinToString()) + val envelopeFromFile = Envelope { + meta { + "a" put "AAA" + "b" put 22.2 + } + dataType = "hep.dataforge.satellite" + dataID = "cellDepositTest$it" // добавил только что + data = dataFile.asBinary() + } + envelopeFromFile + } + + val envelope = Envelope { + multipart(TaggedEnvelopeFormat, envelopeList) + } + println(envelopeList.map { it.data?.size }.joinToString(" ")) + println(envelope.data?.size) + assertTrue { envelope.data!!.size > envelopeList.map { it.data!!.size }.sum() } + + } + } \ No newline at end of file diff --git a/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileEnvelopeTest.kt b/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileEnvelopeTest.kt index 585aced9..f77e4903 100644 --- a/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileEnvelopeTest.kt +++ b/dataforge-io/src/jvmTest/kotlin/hep/dataforge/io/FileEnvelopeTest.kt @@ -1,9 +1,13 @@ package hep.dataforge.io import hep.dataforge.context.Global +import java.nio.ByteBuffer import java.nio.file.Files +import java.util.* import kotlin.test.Test +import kotlin.test.assertEquals import kotlin.test.assertTrue +import kotlin.test.fail class FileEnvelopeTest { @@ -31,14 +35,68 @@ class FileEnvelopeTest { } } + @Test + fun testFileWriteTagged() { + val tmpPath = Files.createTempFile("dataforge_test", ".df") + Global.io.writeEnvelopeFile(tmpPath, envelope) + assertTrue { tmpPath.toFile().length() > 0 } + } + + @Test + fun testFileWriteReadTagged() { + val tmpPath = Files.createTempFile("dataforge_test", ".df") + Global.io.writeEnvelopeFile(tmpPath, envelope) + println(tmpPath.toUri()) + val restored: Envelope = Global.io.readEnvelopeFile(tmpPath)!! + assertTrue { envelope.contentEquals(restored) } + } + + @Test + fun testFileWriteTagless() { + val tmpPath = Files.createTempFile("dataforge_test", ".df") + Global.io.writeEnvelopeFile(tmpPath, envelope, envelopeFormat = TaglessEnvelopeFormat) + assertTrue { tmpPath.toFile().length() > 0 } + } + @Test fun testFileWriteReadTagless() { - Global.io.run { - val tmpPath = Files.createTempFile("dataforge_test_tagless", ".df") - writeEnvelopeFile(tmpPath, envelope, envelopeFormat = TaglessEnvelopeFormat) - println(tmpPath.toUri()) - val restored: Envelope = readEnvelopeFile(tmpPath)!! - assertTrue { envelope.contentEquals(restored) } + val tmpPath = Files.createTempFile("dataforge_test", ".df") + Global.io.writeEnvelopeFile(tmpPath, envelope, envelopeFormat = TaglessEnvelopeFormat) + println(tmpPath.toUri()) + val restored: Envelope = Global.io.readEnvelopeFile(tmpPath)!! + assertTrue { envelope.contentEquals(restored) } + } + + @Test + fun testDataSize() { + val tmpPath = Files.createTempFile("dataforge_test", ".df") + Global.io.writeEnvelopeFile(tmpPath, envelope) + println(tmpPath.toUri()) + val scan = Scanner(tmpPath.toFile().inputStream()).useDelimiter("\n").nextLine() + println(scan) + val format = scan.slice(2..5) + when (format) { + "DF03" -> { + val buff = ByteBuffer.allocate(4) + buff.put(scan.slice(12..19).toByteArray()) + buff.flip() + val size = buff.long + println(size) + assertEquals(8, size) + } + "DF02" -> { + val buff = ByteBuffer.allocate(4) + buff.put(scan.slice(12..15).toByteArray()) + buff.flip() + val size = buff.int + println(size) + assertEquals(8, size) + } + else -> { + fail("Format $format don't have test") + } } } + + } \ No newline at end of file