299 lines
14 KiB
VB.net
299 lines
14 KiB
VB.net
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 = seed.Next(-10, 10)
|
|
|
|
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._string}, {FullError.print(value.array)}, {value._integer}]")
|
|
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 |