| ... | ... | @@ -318,7 +318,7 @@ test "BitStreams with File Stream" { |
| 318 | 318 | try os.deleteFile(tmp_file_name); |
| 319 | 319 | } |
| 320 | 320 | |
| 321 | | fn testIntSerializerDeserializer(comptime endian: builtin.Endian, comptime is_packed: bool) !void { |
| 321 | fn testIntSerializerDeserializer(comptime endian: builtin.Endian, comptime packing: io.Packing) !void { |
| 322 | 322 | //@NOTE: if this test is taking too long, reduce the maximum tested bitsize |
| 323 | 323 | const max_test_bitsize = 128; |
| 324 | 324 | |
| ... | ... | @@ -333,12 +333,12 @@ fn testIntSerializerDeserializer(comptime endian: builtin.Endian, comptime is_pa |
| 333 | 333 | var out = io.SliceOutStream.init(data_mem[0..]); |
| 334 | 334 | const OutError = io.SliceOutStream.Error; |
| 335 | 335 | var out_stream = &out.stream; |
| 336 | | var serializer = io.Serializer(endian, is_packed, OutError).init(out_stream); |
| 336 | var serializer = io.Serializer(endian, packing, OutError).init(out_stream); |
| 337 | 337 | |
| 338 | 338 | var in = io.SliceInStream.init(data_mem[0..]); |
| 339 | 339 | const InError = io.SliceInStream.Error; |
| 340 | 340 | var in_stream = &in.stream; |
| 341 | | var deserializer = io.Deserializer(endian, is_packed, InError).init(in_stream); |
| 341 | var deserializer = io.Deserializer(endian, packing, InError).init(in_stream); |
| 342 | 342 | |
| 343 | 343 | comptime var i = 0; |
| 344 | 344 | inline while (i <= max_test_bitsize) : (i += 1) { |
| ... | ... | @@ -366,21 +366,21 @@ fn testIntSerializerDeserializer(comptime endian: builtin.Endian, comptime is_pa |
| 366 | 366 | const extra_packed_byte = @boolToInt(total_bits % u8_bit_count > 0); |
| 367 | 367 | const total_packed_bytes = (total_bits / u8_bit_count) + extra_packed_byte; |
| 368 | 368 | |
| 369 | | expect(in.pos == if (is_packed) total_packed_bytes else total_bytes); |
| 369 | expect(in.pos == if (packing == .Bit) total_packed_bytes else total_bytes); |
| 370 | 370 | |
| 371 | 371 | //Verify that empty error set works with serializer. |
| 372 | 372 | //deserializer is covered by SliceInStream |
| 373 | 373 | const NullError = io.NullOutStream.Error; |
| 374 | 374 | var null_out = io.NullOutStream.init(); |
| 375 | 375 | var null_out_stream = &null_out.stream; |
| 376 | | var null_serializer = io.Serializer(endian, is_packed, NullError).init(null_out_stream); |
| 376 | var null_serializer = io.Serializer(endian, packing, NullError).init(null_out_stream); |
| 377 | 377 | try null_serializer.serialize(data_mem[0..]); |
| 378 | 378 | try null_serializer.flush(); |
| 379 | 379 | } |
| 380 | 380 | |
| 381 | 381 | test "Serializer/Deserializer Int" { |
| 382 | | try testIntSerializerDeserializer(builtin.Endian.Big, false); |
| 383 | | try testIntSerializerDeserializer(builtin.Endian.Little, false); |
| 382 | try testIntSerializerDeserializer(.Big, .Byte); |
| 383 | try testIntSerializerDeserializer(.Little, .Byte); |
| 384 | 384 | // TODO these tests are disabled due to tripping an LLVM assertion |
| 385 | 385 | // https://github.com/ziglang/zig/issues/2019 |
| 386 | 386 | //try testIntSerializerDeserializer(builtin.Endian.Big, true); |
| ... | ... | @@ -389,7 +389,7 @@ test "Serializer/Deserializer Int" { |
| 389 | 389 | |
| 390 | 390 | fn testIntSerializerDeserializerInfNaN( |
| 391 | 391 | comptime endian: builtin.Endian, |
| 392 | | comptime is_packed: bool, |
| 392 | comptime packing: io.Packing, |
| 393 | 393 | ) !void { |
| 394 | 394 | const mem_size = (16 * 2 + 32 * 2 + 64 * 2 + 128 * 2) / comptime meta.bitCount(u8); |
| 395 | 395 | var data_mem: [mem_size]u8 = undefined; |
| ... | ... | @@ -397,12 +397,12 @@ fn testIntSerializerDeserializerInfNaN( |
| 397 | 397 | var out = io.SliceOutStream.init(data_mem[0..]); |
| 398 | 398 | const OutError = io.SliceOutStream.Error; |
| 399 | 399 | var out_stream = &out.stream; |
| 400 | | var serializer = io.Serializer(endian, is_packed, OutError).init(out_stream); |
| 400 | var serializer = io.Serializer(endian, packing, OutError).init(out_stream); |
| 401 | 401 | |
| 402 | 402 | var in = io.SliceInStream.init(data_mem[0..]); |
| 403 | 403 | const InError = io.SliceInStream.Error; |
| 404 | 404 | var in_stream = &in.stream; |
| 405 | | var deserializer = io.Deserializer(endian, is_packed, InError).init(in_stream); |
| 405 | var deserializer = io.Deserializer(endian, packing, InError).init(in_stream); |
| 406 | 406 | |
| 407 | 407 | //@TODO: isInf/isNan not currently implemented for f128. |
| 408 | 408 | try serializer.serialize(std.math.nan(f16)); |
| ... | ... | @@ -432,17 +432,17 @@ fn testIntSerializerDeserializerInfNaN( |
| 432 | 432 | } |
| 433 | 433 | |
| 434 | 434 | test "Serializer/Deserializer Int: Inf/NaN" { |
| 435 | | try testIntSerializerDeserializerInfNaN(builtin.Endian.Big, false); |
| 436 | | try testIntSerializerDeserializerInfNaN(builtin.Endian.Little, false); |
| 437 | | try testIntSerializerDeserializerInfNaN(builtin.Endian.Big, true); |
| 438 | | try testIntSerializerDeserializerInfNaN(builtin.Endian.Little, true); |
| 435 | try testIntSerializerDeserializerInfNaN(.Big, .Byte); |
| 436 | try testIntSerializerDeserializerInfNaN(.Little, .Byte); |
| 437 | try testIntSerializerDeserializerInfNaN(.Big, .Bit); |
| 438 | try testIntSerializerDeserializerInfNaN(.Little, .Bit); |
| 439 | 439 | } |
| 440 | 440 | |
| 441 | 441 | fn testAlternateSerializer(self: var, serializer: var) !void { |
| 442 | 442 | try serializer.serialize(self.f_f16); |
| 443 | 443 | } |
| 444 | 444 | |
| 445 | | fn testSerializerDeserializer(comptime endian: builtin.Endian, comptime is_packed: bool) !void { |
| 445 | fn testSerializerDeserializer(comptime endian: builtin.Endian, comptime packing: io.Packing) !void { |
| 446 | 446 | const ColorType = enum(u4) { |
| 447 | 447 | RGB8 = 1, |
| 448 | 448 | RA16 = 2, |
| ... | ... | @@ -529,12 +529,12 @@ fn testSerializerDeserializer(comptime endian: builtin.Endian, comptime is_packe |
| 529 | 529 | var out = io.SliceOutStream.init(data_mem[0..]); |
| 530 | 530 | const OutError = io.SliceOutStream.Error; |
| 531 | 531 | var out_stream = &out.stream; |
| 532 | | var serializer = io.Serializer(endian, is_packed, OutError).init(out_stream); |
| 532 | var serializer = io.Serializer(endian, packing, OutError).init(out_stream); |
| 533 | 533 | |
| 534 | 534 | var in = io.SliceInStream.init(data_mem[0..]); |
| 535 | 535 | const InError = io.SliceInStream.Error; |
| 536 | 536 | var in_stream = &in.stream; |
| 537 | | var deserializer = io.Deserializer(endian, is_packed, InError).init(in_stream); |
| 537 | var deserializer = io.Deserializer(endian, packing, InError).init(in_stream); |
| 538 | 538 | |
| 539 | 539 | try serializer.serialize(my_inst); |
| 540 | 540 | |
| ... | ... | @@ -543,13 +543,13 @@ fn testSerializerDeserializer(comptime endian: builtin.Endian, comptime is_packe |
| 543 | 543 | } |
| 544 | 544 | |
| 545 | 545 | test "Serializer/Deserializer generic" { |
| 546 | | try testSerializerDeserializer(builtin.Endian.Big, false); |
| 547 | | try testSerializerDeserializer(builtin.Endian.Little, false); |
| 548 | | try testSerializerDeserializer(builtin.Endian.Big, true); |
| 549 | | try testSerializerDeserializer(builtin.Endian.Little, true); |
| 546 | try testSerializerDeserializer(builtin.Endian.Big, .Byte); |
| 547 | try testSerializerDeserializer(builtin.Endian.Little, .Byte); |
| 548 | try testSerializerDeserializer(builtin.Endian.Big, .Bit); |
| 549 | try testSerializerDeserializer(builtin.Endian.Little, .Bit); |
| 550 | 550 | } |
| 551 | 551 | |
| 552 | | fn testBadData(comptime endian: builtin.Endian, comptime is_packed: bool) !void { |
| 552 | fn testBadData(comptime endian: builtin.Endian, comptime packing: io.Packing) !void { |
| 553 | 553 | const E = enum(u14) { |
| 554 | 554 | One = 1, |
| 555 | 555 | Two = 2, |
| ... | ... | @@ -568,12 +568,12 @@ fn testBadData(comptime endian: builtin.Endian, comptime is_packed: bool) !void |
| 568 | 568 | var out = io.SliceOutStream.init(data_mem[0..]); |
| 569 | 569 | const OutError = io.SliceOutStream.Error; |
| 570 | 570 | var out_stream = &out.stream; |
| 571 | | var serializer = io.Serializer(endian, is_packed, OutError).init(out_stream); |
| 571 | var serializer = io.Serializer(endian, packing, OutError).init(out_stream); |
| 572 | 572 | |
| 573 | 573 | var in = io.SliceInStream.init(data_mem[0..]); |
| 574 | 574 | const InError = io.SliceInStream.Error; |
| 575 | 575 | var in_stream = &in.stream; |
| 576 | | var deserializer = io.Deserializer(endian, is_packed, InError).init(in_stream); |
| 576 | var deserializer = io.Deserializer(endian, packing, InError).init(in_stream); |
| 577 | 577 | |
| 578 | 578 | try serializer.serialize(u14(3)); |
| 579 | 579 | expectError(error.InvalidEnumTag, deserializer.deserialize(A)); |
| ... | ... | @@ -584,8 +584,8 @@ fn testBadData(comptime endian: builtin.Endian, comptime is_packed: bool) !void |
| 584 | 584 | } |
| 585 | 585 | |
| 586 | 586 | test "Deserializer bad data" { |
| 587 | | try testBadData(builtin.Endian.Big, false); |
| 588 | | try testBadData(builtin.Endian.Little, false); |
| 589 | | try testBadData(builtin.Endian.Big, true); |
| 590 | | try testBadData(builtin.Endian.Little, true); |
| 587 | try testBadData(.Big, .Byte); |
| 588 | try testBadData(.Little, .Byte); |
| 589 | try testBadData(.Big, .Bit); |
| 590 | try testBadData(.Little, .Bit); |
| 591 | 591 | } |