static void Main(string[] args) { Console.WriteLine("------------- Program start -----------"); int[] randomPrime = new int[NUMBER_OF_OBJECTS]; NearPrime[] obj = new NearPrime[NUMBER_OF_OBJECTS]; InitializeRandomTwoDigitsPrime(randomPrime); InitializeNearPrimeObject(obj, randomPrime); for (int i = 0; i < NUMBER_OF_VALID_PRIMES; i++) { Console.WriteLine("======== Test Object {0} =========", i + 1); Console.WriteLine("Obj{0} is encapsulated a valid two digits" + "prime number", i + 1); SimulateObjects(obj[i], i); Console.WriteLine(); } for (int i = NUMBER_OF_VALID_PRIMES; i < NUMBER_OF_OBJECTS; i++) { Console.WriteLine("======== Test Object {0} =========", i + 1); Console.WriteLine("Obj{0} is encapsulated an invalid two digits" + " prime number", i + 1); SimulateObjects(obj[i], i); Console.WriteLine(); } Console.WriteLine("------------- Program stop -----------"); }
public static void TestReviveWithActiveObject(NearPrime obj, int name, int queries) { while (obj.getActive()) { Console.WriteLine("obj{0} is currently active -- " + "Trying to revive", name + 1); obj.Revive(); } Console.WriteLine("x obj{0}.mod(x)", name + 1); for (int i = minNumberValidInput; i <= minNumberValidInput + queries; i++) { if (obj.getActive()) { Console.WriteLine(i + " " + obj.Mod(i) + " "); } else { Console.WriteLine("Obj{0} is permanently deactivated", name + 1); break; } } }
public static void SimulateObjects(NearPrime obj, int name) { Random random = new Random(); Console.WriteLine("Testing object with valid input"); Console.WriteLine("x obj{0}.mod(x)", name + 1); int queries = random.Next(minQueries, maxQueries); TestModFunctionWithValidInput(obj, queries); Console.WriteLine(); Console.WriteLine("Object is reset..."); obj.Reset(); Console.WriteLine(); Console.WriteLine("Testing object with invalid input"); Console.WriteLine("x obj{0}.mod(x)", name + 1); TestModFunctionWithInValidInput(obj, queries); Console.WriteLine(); Console.WriteLine("Object is reset..."); obj.Reset(); Console.WriteLine(); Console.WriteLine("Testing revive active object"); TestReviveWithActiveObject(obj, name, queries); }
public static void TestModFunctionWithInValidInput(NearPrime obj, int queries) { for (int i = minNumberValidInput - queries; i < minNumberValidInput; i++) { if (obj.getActive()) { Console.WriteLine(i + " " + obj.Mod(i) + " "); } else { Console.WriteLine("Input value is not valid -- Reviving"); obj.Revive(); break; } } }
public static void InitializeNearPrimeObject(NearPrime[] obj, int[] randomPrime) { Console.WriteLine("Initialize nearPrime objects"); for (int i = 0; i < NUMBER_OF_VALID_PRIMES; i++) { obj[i] = new NearPrime(randomPrime[i]); } Random random = new Random(); for (int i = NUMBER_OF_VALID_PRIMES; i < NUMBER_OF_OBJECTS; i++) { int randomNumber = random.Next(-10, 110); while (randomNumber >= 11 && randomNumber <= 97) { randomNumber = random.Next(-10, 110); } obj[i] = new NearPrime(randomNumber); } }
public static void TestModFunctionWithValidInput(NearPrime obj, int queries) { int value = 0; for (int i = minNumberValidInput; i <= minNumberValidInput + queries; i++) { if (obj.getActive()) { value = obj.Mod(i); } if (value != 0) { Console.WriteLine(i + " " + value); } else { Console.WriteLine("Exceeded the query limit -- Reviving"); obj.Revive(); break; } } }