ErrorsManager/CSharp/Tests.cs

298 lines
14 KiB
C#

using System;
namespace ErrorsManager{
class FullError{
public int integer;
public string _string;
public byte[] array;
public FullError(ErrorsManager errors, int integer){
this.integer = integer;
_string = errors.to_string(integer);
array = errors.to_array(integer);
}
public FullError(ErrorsManager errors, string _string){
integer = errors.to_integer(_string);
this._string = _string;
array = errors.to_array(_string);
}
public FullError(ErrorsManager errors, byte[] array){
integer = errors.to_integer(array);
_string = errors.to_string(array);
this.array = array;
}
public static string print(byte[] array){
return "[" + string.Join(", ", array) + "]";
}
}
class Tests{
public static void errors(){
ErrorsManager errors = new ErrorsManager();
FullError error = new FullError(errors, 217934237);
FullError reset = 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();
}
public static ErrorsManager conversions(int tests = 10, object inputs = null){
ErrorsManager errors = new ErrorsManager(inputs);
Random seed = new Random();
for(int i = 0; i < tests; i ++){
FullError error = 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();
}
return errors;
}
public static void alphabet(int tests = 10){
Random seed = new Random();
for(int i = 0; i < tests; i ++){
ErrorsManager errors = conversions(1, new Dictionary<string, object>() {
{"base", seed.Next(2, 128)}
});
Console.WriteLine($"^^^ ALPHABET: {string.Join(", ", errors.get_alphabet())} ^^^");
Console.WriteLine();
}
}
public static void bitwise(int tests = 10){
ErrorsManager errors = new ErrorsManager();
Random seed = new Random();
for(int i = 0; i < tests; i ++){
FullError error = new FullError(errors, seed.Next(0, 1 << seed.Next(0, 16)));
FullError shifted = new FullError(errors, 0);
FullError unshifted = new FullError(errors, 0);
int bitwise = 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();
}
}
public static void bitwise_sucesive(int tests = 10){
ErrorsManager errors = new ErrorsManager();
FullError error = 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(int i = -tests; i < tests; i ++){
FullError shifted = 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();
}
}
public static void bits(int tests = 10){
ErrorsManager errors = new ErrorsManager();
Random seed = new Random();
for(int i = 0; i < tests; i++){
FullError error = new FullError(errors, seed.Next(0, 1 << seed.Next(0, 28)));
int from_value = seed.Next(-15, 15);
int bits_value = seed.Next(-13, 13);
int[] from = new int[]{from_value, from_value, from_value};
int[] bits = new int[]{bits_value, bits_value, bits_value};
errors.get_from_bits(error.integer, ref from[0], ref bits[0]);
errors.get_from_bits(error._string, ref from[1], ref bits[1]);
errors.get_from_bits(error.array, ref from[2], ref 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();
}
}
public static void reset(int tests = 10){
ErrorsManager errors = new ErrorsManager();
Random seed = new Random();
for(int i = 0; i < tests; i ++){
FullError error = new FullError(errors, seed.Next(0, 1 << 28));
int from = seed.Next(-15, 15);
int bits = seed.Next(-13, 13);
FullError reset = 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();
}
}
public static void ranges(int tests = 10){
ErrorsManager errors = new ErrorsManager();
Random seed = new Random();
for(int i = 0; i < tests; i ++){
FullError error = new FullError(errors, seed.Next(0, 1 << 28));
int from = seed.Next(-15, 15);
int bits = seed.Next(-13, 13);
FullError range = new FullError(errors, 0);
Console.WriteLine($"RANGE: from {from} bits {bits}");
errors.get_from_bits(error._string, ref from, ref 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();
}
}
public static void has(int tests = 10){
ErrorsManager errors = new ErrorsManager();
Random seed = new Random();
for(int i = 0; i < tests; i ++){
FullError error = new FullError(errors, seed.Next(0, 1 << 28));
int from = seed.Next(-15, 15);
int bits = 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();
}
}
public static void set(int tests = 10){
ErrorsManager errors = new ErrorsManager();
Random seed = new Random();
for(int i = 0; i < tests; i ++){
FullError error = new FullError(errors, seed.Next(0, 1 << 15));
FullError value = new FullError(errors, seed.Next(0, 1 << 15));
int from = seed.Next(-15, 15);
int bits = seed.Next(-13, 13);
FullError set_integer = new FullError(errors, 0);
FullError set_string = new FullError(errors, 0);
FullError set_array = 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();
}
}
}
}