public void SplitToBlocksAndInterleave_ShouldReturnCorrectResult(byte dataCodewordsPerBlockInGroup1, byte dataCodewordsPerBlockInGroup2, byte[] expectedInterleaveResult) { // Arrange var versionInfo = new VersionInfo(5, ErrorCorrectionLevel.Q, 18, 2, dataCodewordsPerBlockInGroup1, 2, dataCodewordsPerBlockInGroup2); var data = new byte[] { 67, 85, 70, 134, 87, 38, 85, 194, 119, 50, 6, 18, 6, 103, 38, 246, 246, 66, 7, 118, 134, 242, 7, 38, 86, 22, 198, 199, 146, 6, 182, 230, 247, 119, 50, 7, 118, 134, 87, 38, 82, 6, 134, 151, 50, 7, 70, 247, 118, 86, 194, 6, 151, 50, 16, 236, 17, 236, 17, 236, 17, 236 }; // Act byte[] interleaveResult = BlockList.SplitToBlocks(new Queue <byte>(data), versionInfo).Interleave(versionInfo); // Assert interleaveResult.Should().BeEquivalentTo(expectedInterleaveResult); }