private void testN1(SourceTask task) { using (var bbs = new BytesBuilderStatic(task.Size)) { var bbp = new BytesBuilderForPointers(); var bbb = new BytesBuilder(); var allocator = new BytesBuilderForPointers.AllocHGlobal_AllocatorForUnsafeMemory(); var fix = new BytesBuilderForPointers.Fixed_AllocatorForUnsafeMemory(); for (int size = 1; size <= task.Size; size++) { BytesBuilderForPointers.Record res_bbs = null, res_bbb = null, res_bbp = null, res_bbs2 = null, r = null; try { try { byte V = 1; r = allocator.AllocMemory(size); while (bbb.Count + size <= size) { for (int i = 0; i < r.len; i++) { r.array[i] = V++; } bbs.add(r); bbp.addWithCopy(r, r.len, allocator); for (int i = 0; i < r.len; i++) { bbb.addByte(r.array[i]); } } r.Dispose(); res_bbs = bbs.getBytes(); res_bbp = bbp.getBytes(); res_bbb = fix.FixMemory(bbb.getBytes()); bbs.Resize(bbs.size + 1); res_bbs2 = bbs.getBytes(); } finally { bbs.Clear(); bbp.Clear(); bbb.Clear(); } if (!BytesBuilderForPointers.isArrayEqual_Secure(res_bbs, res_bbp) || !BytesBuilderForPointers.isArrayEqual_Secure(res_bbs, res_bbb) || !BytesBuilderForPointers.isArrayEqual_Secure(res_bbs2, res_bbb)) { throw new Exception("Test_BytesBuilder.testN: size = " + task.Size + " unequal"); } } finally { res_bbs?.Dispose(); res_bbp?.Dispose(); res_bbb?.Dispose(); res_bbs2?.Dispose(); } } } }
private void testN3(SourceTask task) { for (int cst = 1; cst < 11 && cst < task.Size; cst++) { using (var bbs = new BytesBuilderStatic(task.Size)) { var bbp = new BytesBuilderForPointers(); var bbb = new BytesBuilder(); var allocator = new BytesBuilderForPointers.AllocHGlobal_AllocatorForUnsafeMemory(); var fix = new BytesBuilderForPointers.Fixed_AllocatorForUnsafeMemory(); int size = task.Size; { BytesBuilderForPointers.Record res_bbs = null, res_bbp = null, res_bbb = null; try { try { byte V = 1; var r = allocator.AllocMemory(size - 1); // var r2 = allocator.AllocMemory(size >> 1); while (bbb.Count < size - 1) { for (int i = 0; i < r.len; i++) { r.array[i] = V++; } bbs.add(r); bbp.addWithCopy(r, r.len, allocator); for (int i = 0; i < r.len; i++) { bbb.addByte(r.array[i]); } } bbs.add(r.array, 1); bbp.addWithCopy(r.array, 1, allocator); bbb.addByte(r.array[0]); r.Dispose(); r = null; int remainder = size; do { remainder -= cst; try { res_bbs = allocator.AllocMemory(cst); bbs.getBytesAndRemoveIt(res_bbs); if (bbs.Count != remainder) { throw new Exception("Test_BytesBuilder.testN: size = " + task.Size + ", bbs.Count > 1: " + bbs.Count); } res_bbp = allocator.AllocMemory(cst); bbp.getBytesAndRemoveIt(res_bbp); if (bbp.Count != remainder) { throw new Exception("Test_BytesBuilder.testN: size = " + task.Size + ", bbp.Count > 1: " + bbp.Count); } res_bbb = fix.FixMemory(bbb.getBytesAndRemoveIt(resultCount: cst)); if (bbb.Count != remainder) { throw new Exception("Test_BytesBuilder.testN: size = " + task.Size + ", bbb.Count > 1: " + bbb.Count); } if (!BytesBuilderForPointers.isArrayEqual_Secure(res_bbs, res_bbp) || !BytesBuilderForPointers.isArrayEqual_Secure(res_bbs, res_bbb)) { throw new Exception("Test_BytesBuilder.testN: size = " + task.Size + " unequal"); } } finally { res_bbs?.Dispose(); res_bbp?.Dispose(); res_bbb?.Dispose(); res_bbs = null; res_bbp = null; res_bbb = null; } try { res_bbs = bbs.getBytes(); res_bbp = bbp.getBytes(); res_bbb = fix.FixMemory(bbb.getBytes()); if (!BytesBuilderForPointers.isArrayEqual_Secure(res_bbs, res_bbp) || !BytesBuilderForPointers.isArrayEqual_Secure(res_bbs, res_bbb)) { throw new Exception("Test_BytesBuilder.testN: size = " + task.Size + " unequal [2]"); } } finally { res_bbs?.Dispose(); res_bbp?.Dispose(); res_bbb?.Dispose(); res_bbs = null; res_bbp = null; res_bbb = null; } }while (bbs.Count > cst); } finally { bbs.Clear(); bbp.Clear(); bbb.Clear(); } } finally { res_bbs?.Dispose(); res_bbp?.Dispose(); res_bbb?.Dispose(); res_bbs = null; res_bbp = null; res_bbb = null; } } } } }
private void test0(SourceTask task) { try { var t8 = new byte[8]; ulong data = 0xA5A5_B5A5_A5A5_B5B5; BytesBuilder.ULongToBytes(data, ref t8); BytesBuilder.BytesToULong(out ulong dt, t8, 0); if (dt != data) { var e = new Error() { Message = "Test_BytesBuilder.test0: ULongToBytes != BytesToULong" }; this.task.error.Add(e); } BytesBuilder.BytesToUInt(out uint dt4, t8, 0); if (dt4 != (uint)data) { var e = new Error() { Message = "Test_BytesBuilder.test0: ULongToBytes/4 != BytesToUInt" }; this.task.error.Add(e); } BytesBuilder.BytesToUInt(out dt4, t8, 4); if (dt4 != (uint)(data >> 32)) { var e = new Error() { Message = "Test_BytesBuilder.test0: ULongToBytes>>/4 != BytesToUInt" }; this.task.error.Add(e); } var fa = new BytesBuilderForPointers.Fixed_AllocatorForUnsafeMemory(); var b1 = new byte[8]; var r1 = fa.FixMemory(b1); var r2 = fa.FixMemory(t8); if (BytesBuilderForPointers.isArrayEqual_Secure(r1, r2)) { var e = new Error() { Message = "Test_BytesBuilder.test0: isArrayEqual_Secure(r1, r2)" }; this.task.error.Add(e); } BytesBuilder.CopyTo(t8, b1, 0, 7); if (BytesBuilderForPointers.isArrayEqual_Secure(r1, r2)) { var e = new Error() { Message = "Test_BytesBuilder.test0: isArrayEqual_Secure(r1, r2) [2]" }; this.task.error.Add(e); } b1[7] = t8[7]; if (!BytesBuilderForPointers.isArrayEqual_Secure(r1, r2)) { var e = new Error() { Message = "Test_BytesBuilder.test0: isArrayEqual_Secure(r1, r2) [3]" }; this.task.error.Add(e); } r1.Clear(); BytesBuilderForPointers.BytesToULong(out dt, r2, 0, 8); if (dt != data) { var e = new Error() { Message = "Test_BytesBuilder.test0: ULongToBytes != BytesToULong (BytesBuilderForPointers)" }; this.task.error.Add(e); } r1.Dispose(); r2.Dispose(); using (new BytesBuilderStatic(task.Size)) { var e = new Error() { Message = "Test_BytesBuilder.test0: нет исключения" }; this.task.error.Add(e); } } catch (ArgumentOutOfRangeException) {} catch (Exception ex) { var e = new Error() { ex = ex, Message = "Test_BytesBuilder.test0: exception " + ex.Message }; this.task.error.Add(e); } }