Imports System Namespace ErrorsManager Class FullError Public _integer As Integer Public _string As String Public array As Byte() Public Sub New(errors As ErrorsManager, _integer As Integer) Me._integer = _integer _string = errors.to_string(_integer) array = errors.to_array(_integer) End Sub Public Sub New(errors As ErrorsManager, _string As String) _integer = errors.to_integer(_string) Me._string = _string array = errors.to_array(_string) End Sub Public Sub New(errors As ErrorsManager, array As Byte()) _integer = errors.to_integer(array) _string = errors.to_string(array) Me.array = array End Sub Public Shared Function print(array As Byte()) As String Return "[" & String.Join(", ", array) & "]" End Function End Class Class Tests Public Shared Sub errors() Dim errors As New ErrorsManager() Dim [error] As New FullError(errors, 217934237) Dim reset As New FullError(errors, 0) reset._integer = errors.reset([error]._integer, -5, 12) reset._string = errors.reset([error]._string, -5, 12) reset.array = errors.reset([error].array, -5, 12) Console.WriteLine($"RESET: from {-5} bits {12}") Console.WriteLine($"INTEGER: {errors.to_string_binary([error]._integer)} - {errors.to_string_binary(reset._integer)}") Console.WriteLine($"STRING: {errors.to_string_binary([error]._string)} - {errors.to_string_binary(reset._string)}") Console.WriteLine($"ARRAY: {errors.to_string_binary([error].array)} - {errors.to_string_binary(reset.array)}") Console.WriteLine() End Sub Public Shared Function conversions(Optional tests As Integer = 10, Optional inputs As Object = Nothing) As ErrorsManager Dim errors As New ErrorsManager(inputs) Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << 16)) Console.WriteLine($"INTEGER: {errors.to_integer([error]._integer)}, {errors.to_integer([error]._string)}, {errors.to_integer([error].array)}") Console.WriteLine($"STRING: {errors.to_string([error]._integer)}, {errors.to_string([error]._string)}, {errors.to_string([error].array)}") Console.WriteLine($"ARRAY: {FullError.print(errors.to_array([error]._integer))}, {FullError.print(errors.to_array([error]._string))}, {FullError.print(errors.to_array([error].array))}") Console.WriteLine() Next Return errors End Function Public Shared Sub alphabet(Optional tests As Integer = 10) Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim errors As ErrorsManager = conversions(1, New Dictionary(Of String, Object)() From { {"base", seed.Next(2, 128)} }) Console.WriteLine($"^^^ ALPHABET: {String.Join(", ", errors.get_alphabet())} ^^^") Console.WriteLine() Next End Sub Public Shared Sub bitwise(Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << seed.Next(0, 16))) Dim shifted As New FullError(errors, 0) Dim unshifted As New FullError(errors, 0) Dim bitwise As Integer = 10 - seed.Next(0, 20) Console.WriteLine($"BITWISE: {bitwise}") shifted._integer = errors.bitwise([error]._integer, bitwise) shifted._string = errors.bitwise([error]._string, bitwise) shifted.array = errors.bitwise([error].array, bitwise) unshifted._integer = errors.bitwise(shifted._integer, -bitwise) unshifted._string = errors.bitwise(shifted._string, -bitwise) unshifted.array = errors.bitwise(shifted.array, -bitwise) Console.WriteLine($"INTEGER: {errors.to_string_binary([error]._integer)} - {[error]._integer}") Console.WriteLine($"STRING: {errors.to_string_binary([error]._string)} - {[error]._string}") Console.WriteLine($"ARRAY: {errors.to_string_binary([error].array)} - {FullError.print([error].array)}") Console.WriteLine($"INTEGER: {errors.to_string_binary(shifted._integer)} - {shifted._integer}") Console.WriteLine($"STRING: {errors.to_string_binary(shifted._string)} - {shifted._string}") Console.WriteLine($"ARRAY: {errors.to_string_binary(shifted.array)} - {FullError.print(shifted.array)}") Console.WriteLine($"INTEGER: {errors.to_string_binary(unshifted._integer)} - {unshifted._integer}") Console.WriteLine($"STRING: {errors.to_string_binary(unshifted._string)} - {unshifted._string}") Console.WriteLine($"ARRAY: {errors.to_string_binary(unshifted.array)} - {FullError.print(unshifted.array)}") Console.WriteLine() Next End Sub Public Shared Sub bitwise_sucesive(Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim [error] As New FullError(errors, New Random().Next(0, 1 << 16)) Console.WriteLine($"INTEGER: {errors.to_string_binary([error]._integer)} - {[error]._integer}") Console.WriteLine($"STRING: {errors.to_string_binary([error]._string)} - {[error]._string}") Console.WriteLine($"ARRAY: {errors.to_string_binary([error].array)} - {FullError.print([error].array)}") Console.WriteLine() For i As Integer = -tests To tests - 1 Dim shifted As New FullError(errors, 0) Console.WriteLine($"BITWISE: {i}") shifted._integer = errors.bitwise([error]._integer, i) shifted._string = errors.bitwise([error]._string, i) shifted.array = errors.bitwise([error].array, i) Console.WriteLine($"INTEGER: {errors.to_string_binary(shifted._integer)} - {shifted._integer}") Console.WriteLine($"STRING: {errors.to_string_binary(shifted._string)} - {shifted._string}") Console.WriteLine($"ARRAY: {errors.to_string_binary(shifted.array)} - {FullError.print(shifted.array)}") Console.WriteLine() Next End Sub Public Shared Sub bits(Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << seed.Next(0, 28))) Dim from_value As Integer = seed.Next(-15, 15) Dim bits_value As Integer = seed.Next(-13, 13) Dim from As Integer() = {from_value, from_value, from_value} Dim bits As Integer() = {bits_value, bits_value, bits_value} errors.get_from_bits([error]._integer, from(0), bits(0)) errors.get_from_bits([error]._string, from(1), bits(1)) errors.get_from_bits([error].array, from(2), bits(2)) Console.WriteLine($"CODE: {[error]._integer} - {[error]._string} - {FullError.print([error].array)}") Console.WriteLine($"ERROR: {errors.to_string_binary([error]._integer)} - {errors.get_bits([error]._integer)} - {errors.get_bits([error]._string)} - {errors.get_bits([error].array)}") Console.WriteLine($"FROM: {from_value} - {from(0)}, {from(1)}, {from(2)}") Console.WriteLine($"BITS: {bits_value} - {bits(0)}, {bits(1)}, {bits(2)}") Console.WriteLine() Next End Sub Public Shared Sub reset(Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << 28)) Dim [from] As Integer = seed.Next(-15, 15) Dim bits As Integer = seed.Next(-13, 13) Dim reset As New FullError(errors, 0) reset._integer = errors.reset([error]._integer, [from], bits) reset._string = errors.reset([error]._string, [from], bits) reset.array = errors.reset([error].array, [from], bits) Console.WriteLine($"RESET: from {[from]} bits {bits}") Console.WriteLine($"INTEGER: {errors.to_string_binary([error]._integer)} - {errors.to_string_binary(reset._integer)}") Console.WriteLine($"STRING: {errors.to_string_binary([error]._string)} - {errors.to_string_binary(reset._string)}") Console.WriteLine($"ARRAY: {errors.to_string_binary([error].array)} - {errors.to_string_binary(reset.array)}") Console.WriteLine() Next End Sub Public Shared Sub ranges(Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << 28)) Dim [from] As Integer = seed.Next(-15, 15) Dim bits As Integer = seed.Next(-13, 13) Dim range As New FullError(errors, 0) Console.WriteLine($"RANGE: from {[from]} bits {bits}") errors.get_from_bits([error]._string, [from], bits) Console.WriteLine($"REAL: from {[from]} bits {bits}") range._integer = errors.get_range([error]._integer, [from], bits) range._string = errors.get_range([error]._string, [from], bits) range.array = errors.get_range([error].array, [from], bits) Console.WriteLine($"INTEGER: {errors.to_string_binary([error]._integer)} - {errors.to_string_binary(range._integer)}") Console.WriteLine($"STRING: {errors.to_string_binary([error]._string)} - {errors.to_string_binary(range._string)}") Console.WriteLine($"ARRAY: {errors.to_string_binary([error].array)} - {errors.to_string_binary(range.array)}") Console.WriteLine() Next End Sub Public Shared Sub has(Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << 28)) Dim [from] As Integer = seed.Next(-15, 15) Dim bits As Integer = seed.Next(-13, 13) Console.WriteLine($"HAS: from {[from]} bits {bits}") Console.WriteLine($"INTEGER: {errors.has([error]._integer, [from], bits)} - {errors.to_string_binary([error]._integer)} - {errors.to_string_binary(errors.get_range([error]._integer, [from], bits))}") Console.WriteLine($"STRING: {errors.has([error]._string, [from], bits)} - {errors.to_string_binary([error]._string)} - {errors.to_string_binary(errors.get_range([error]._string, [from], bits))}") Console.WriteLine($"ARRAY: {errors.has([error].array, [from], bits)} - {errors.to_string_binary([error].array)} - {errors.to_string_binary(errors.get_range([error].array, [from], bits))}") Console.WriteLine() Next End Sub Public Shared Sub [set](Optional tests As Integer = 10) Dim errors As New ErrorsManager() Dim seed As New Random() For i As Integer = 0 To tests - 1 Dim [error] As New FullError(errors, seed.Next(0, 1 << 15)) Dim value As New FullError(errors, seed.Next(0, 1 << 15)) Dim [from] As Integer = seed.Next(-15, 15) Dim bits As Integer = seed.Next(-13, 13) Dim set_integer As New FullError(errors, 0) Dim set_string As New FullError(errors, 0) Dim set_array As New FullError(errors, 0) set_integer._integer = errors.set([error]._integer, value._integer, [from], bits) set_string._integer = errors.set([error]._integer, value._string, [from], bits) set_array._integer = errors.set([error]._integer, value.array, [from], bits) set_integer._string = errors.set([error]._string, value._integer, [from], bits) set_string._string = errors.set([error]._string, value._string, [from], bits) set_array._string = errors.set([error]._string, value.array, [from], bits) set_integer.array = errors.set([error].array, value._integer, [from], bits) set_string.array = errors.set([error].array, value._string, [from], bits) set_array.array = errors.set([error].array, value.array, [from], bits) Console.WriteLine($"SET: from {[from]} bits {bits} to {value}") Console.WriteLine($"ERROR: {errors.to_string_binary([error]._integer)} - VALUE: {errors.to_string_binary(value._integer)}") Console.WriteLine($"INTEGER: {errors.to_string_binary(set_integer._integer)} - {errors.to_string_binary(set_integer._string)} - {errors.to_string_binary(set_integer.array)}") Console.WriteLine($"STRING: {errors.to_string_binary(set_string._integer)} - {errors.to_string_binary(set_string._string)} - {errors.to_string_binary(set_string.array)}") Console.WriteLine($"ARRAY: {errors.to_string_binary(set_array._integer)} - {errors.to_string_binary(set_array._string)} - {errors.to_string_binary(set_array.array)}") Console.WriteLine() Next End Sub End Class End Namespace