public void FloatTest() { /*Assert.That(4.0f, Is.EqualTo(4.0f).Within(4.0f * epsilon), * "Floats constraint-based");*/ //Assert.AreEqual(4.0f, 4.0f, 4.0f * epsilon, "Floats"); Assert.True(Util.InEpsilon(4.0f, 4.0f, epsilon * 4.0f), "Floats"); }
public void AssocAddCheck() { Func <int, int, int, bool> func = (x, y, z) => { double a = (double)x; double b = (double)y; double c = (double)z; return(Util.InEpsilon((a + b) + c, a + (b + c), epsilon * ((a + b) + c))); }; Prop.ForAll <int, int, int>(func).QuickCheckThrowOnFailure(); }
public bool SquareProp(uint x) { var funcs = new Func <float, float>[] { Classic.SquareLp, Classic.SquareI }; float n = (float)(x % 100 + 1); var ans = Math.Pow(n, 2.0f); return(funcs.Aggregate(true, (acc, f) => acc && Util.InEpsilon(ans, f(n), epsilon * ans))); }
public void MinSortHeadCheckB() { Func <IEnumerable <double>, bool> func = xs => { double[] ys = xs.Select(e => e).ToArray(); Array.Sort(ys); return(Util.InEpsilon(xs.Min(), ys[0], epsilon * xs.Min())); }; Arb.Register <MyArbitraries>(); Prop.ForAll <IEnumerable <double> >(func).QuickCheckThrowOnFailure(); }
public void MinSortHeadCheckA() { Func <FsCheck.NonEmptyArray <FsCheck.NormalFloat>, bool> func = xs => { double[] ys = xs.Get.Select(e => e.Get).ToArray(); Array.Sort(ys); return(Util.InEpsilon(xs.Get.Min().Get, ys[0], epsilon * ys[0])); }; Prop.ForAll <FsCheck.NonEmptyArray <FsCheck.NormalFloat> >( func).QuickCheckThrowOnFailure(); }
public bool ExptProp(uint x, uint y) { var funcs = new Func <float, float, float>[] { Classic.ExptLp, Classic.ExptI }; float b = (float)(x % 19 + 1); float n = (float)(y % 10 + 1); var ans = Math.Pow(b, n); /*bool res = true; * foreach (var f in funcs) * res = res && Util.InEpsilon(ans, f(b, n), epsilon * ans); * return res;*/ return(funcs.Aggregate(true, (acc, f) => acc && Util.InEpsilon(ans, f(b, n), epsilon * ans))); }
public void QueueTest() { float[] floatArr = { 25.7f, 0.1f, 78.5f, 52.3f }; Queue <float> queue1 = new Queue <float>(); Assert.AreEqual(0, queue1.Count, "isEmpty"); foreach (float elem in floatArr) { queue1.Enqueue(elem); } Assert.AreEqual(floatArr.Length, queue1.Count, "length"); Assert.AreEqual(floatArr[0], queue1.Peek(), "peek"); queue1.Enqueue(-0.5f); Assert.AreEqual(true, queue1.Contains(-0.5f), "offer"); Assert.AreEqual(floatArr[0], queue1.Dequeue(), epsilon * floatArr[0], "poll"); Assert.AreEqual("[0.1, 78.5, 52.3, -0.5]", Util.MkString <float>(queue1.ToArray()), "toString"); }
public void ListTest() { long[] numArr = { 16L, 2L, 77L, 29L }; long[] nines = { 9L, 9L, 9L, 9L }; List <long> lst1 = new List <long>(); Assert.AreEqual(0, lst1.Count, "isEmpty"); //foreach (long elem in numArr) { // lst1.Add(elem); //} lst1.AddRange(numArr); Assert.AreEqual(numArr.Length, lst1.Count, "length"); Assert.AreEqual(numArr[0], lst1[0], "first"); Assert.AreEqual(numArr[2], lst1[2], "nth"); Assert.AreEqual(1, lst1.IndexOf(numArr[1]), "indexOf"); lst1.AddRange(nines); Assert.AreEqual(numArr.Length + nines.Length, lst1.Count, "append"); lst1.Sort(); Assert.AreEqual("[2, 9, 9, 9, 9, 16, 29, 77]", Util.MkString <long>(lst1), "toString"); }
public bool MinSortHeadPropB(IEnumerable <double> xs) { double[] ys = xs.Select(e => e).ToArray(); Array.Sort(ys); return(Util.InEpsilon(xs.Min(), ys[0], epsilon * xs.Min())); }
public bool MinSortHeadPropA(FsCheck.NonEmptyArray <FsCheck.NormalFloat> xs) { double[] ys = xs.Get.Select(e => e.Get).ToArray(); Array.Sort(ys); return(Util.InEpsilon(xs.Get.Min().Get, ys[0], epsilon * ys[0])); }
public bool AssocAddProp(int x, int y, int z) { double a = (double)x; double b = (double)y; double c = (double)z; return(Util.InEpsilon((a + b) + c, a + (b + c), epsilon * ((a + b) + c))); }
static void RunIntro(string name, int num, bool isExpt2, string rsrcPath = "resources") { DateTime time1 = DateTime.Now; Stopwatch stopwatch1 = new Stopwatch(); stopwatch1.Start(); // basic datatypes bool isDone = false; int numI = 0, arrLen = (int)ConstItems.ZERO, delayMsecs = 2500, seedp = time1.Millisecond; float timeDiff = 0.0f; char ch = '\0'; // strings & arrays string greetStr, dateStr, greetPath = "greet.txt"; char[] str1 = new char[64]; int[] numArr = { 9, 9, 0x9, 9 }; // {bin, oct, hex, dec} //composites UVar uVar1 = new UVar(); //User user1 = new User() {Name = "World", Num = 0, TimeIn = time1}; User user1 = new User("World", 0, time1); var tup1 = new Tuple <byte, short>((byte)Kind.INTSHORT, 100); Person pers; Random rnd = new Random(seedp); IO.TextWriter fOut = Console.Out; TimeZone tz1 = TimeZone.CurrentTimeZone; string tzStr = tz1.IsDaylightSavingTime(time1) ? tz1.DaylightName : tz1.StandardName; arrLen = numArr.Length; for (int i = 0; arrLen > i; ++i) // foreach (int elem in numArr) { numI += numArr[i]; // numI += elem; } Trace.Assert((numArr.Length * numArr[0]) == numI, "arrLen * numArr[0] != numI"); ch = Misc.DelayChar(delayMsecs); do { uVar1.kind = tup1.Item1; uVar1.val = new UnionVal() { sh = tup1.Item2 }; uVar1.kind = (byte)Kind.INTSHORT; uVar1.val = new UnionVal() { sh = -1 }; uVar1.kind = (byte)Kind.UINTLONG; uVar1.val = new UnionVal() { ul = 1UL }; uVar1.kind = (byte)Kind.FLOAT; uVar1.val = new UnionVal() { f = 100.0f }; uVar1.kind = (byte)Kind.DOUBLE; uVar1.val = new UnionVal() { d = 100.0d }; uVar1.kind = (byte)Kind.DECIMAL; uVar1.val = new UnionVal() { m = 1000.0m }; str1[0] = '\0'; Trace.Assert(((byte)Kind.DECIMAL == uVar1.kind) && (1000.0m == uVar1.val.m), "kind == Kind.DECIMAL && val == 1000.0m is false"); } while (isDone); user1.Name = name; user1.Num = 0 == num?rnd.Next(0, 17) + 2 : num; SysTextRegex.Regex re = new SysTextRegex.Regex(@"(?i)^quit$"); SysTextRegex.Match m = re.Match(name); Console.WriteLine("{0} match: {1} to {2}\n", m.Success ? "Good" : "Does not", name, re); dateStr = user1.TimeIn.ToString("ddd MMM dd HH:mm:ss yyyy zzz"); //greetStr = Misc.Greeting(greetPath, user1.Name); try { //greetStr = (new IO.StreamReader(rsrcPath + "/" + greetPath)).ReadToEnd().TrimEnd('\n', '\r') + user1.Name; greetStr = IO.File.ReadAllText(rsrcPath + "/" + greetPath).TrimEnd('\n', '\r') + user1.Name; } catch (Exception exc0) { Console.Error.WriteLine("(exc: {0}) Bad env var RSRC_PATH: {1}\n", exc0, rsrcPath); try { greetStr = Util.GetFromResources(greetPath, assembly).TrimEnd('\n', '\r') + user1.Name; } catch (Exception exc1) { throw; Environment.Exit(1); } } Console.WriteLine("{0} {1}\n{2}!", dateStr, tzStr, greetStr); stopwatch1.Stop(); timeDiff = stopwatch1.ElapsedMilliseconds; Console.WriteLine("(program {0}) Took {1:F1} seconds.", progName, timeDiff * 1.0e-3); int[] ints = { 2, 1, 0, 4, 3 }; var lst = new SysCollGen.List <int>(ints); if (isExpt2) { fOut.WriteLine("Expt(2.0, {0}) = {1}", user1.Num, Classic.ExptLp(2.0f, user1.Num)); var res = Util.MkString(lst); Console.Write("Reverse({0}): ", res); var lstTmp = Seqops.CopyOfLp <int>(lst); Seqops.ReverseLp <int>(lstTmp); res = Util.MkString(lstTmp); Console.WriteLine("{0}", res); res = Util.MkString(lst); Console.Write("{0}.Sort(): ", res); lst.Sort(); res = Util.MkString(lst); Console.WriteLine("{0}", res); } else { fOut.WriteLine("Fact({0}) = {1}", user1.Num, Classic.FactLp(user1.Num)); int el = 3; var res = Util.MkString(lst); int idx = Seqops.IndexOfLp <int>(el, lst); Console.WriteLine("IndexOf({0}, {1}): {2}", el, res, idx); int newVal = 50; Console.Write("{0}.Add({1}): ", res, newVal); lst.Add(newVal); res = Util.MkString(lst); Console.WriteLine("{0}", res); } Console.WriteLine(new string('-', 40)); int nPascal = 5; int[][] arrPascal = Classic.PascalTriAdd(nPascal); Console.WriteLine("PascalTri(n: {0}): ", nPascal); Classic.PrintPascalTri(nPascal, arrPascal); Console.WriteLine(new string('-', 40)); int ndisks = 4, lenHanoi = (int)Math.Pow(2.0f, ndisks) - 1; int[][] arrHanoi = ClassicPuzzles.Hanoi(1, 2, 3, ndisks); Console.WriteLine("Hanoi(src: 1, dest: 2, spare: 3, ndisks: {0}): ", ndisks); for (int i = 0; lenHanoi > i; ++i) { Console.WriteLine("move #{0,-2}: move from {1} to {2}", i + 1, arrHanoi[i][0], arrHanoi[i][1]); } Console.WriteLine(new string('-', 40)); int numqueens = 8, queensNdx = rnd.Next(0, 50); int[] arrNqueens = ClassicPuzzles.Nqueens(queensNdx, numqueens); Console.WriteLine("Nqueens(ndx: {0}, numqueens: {1}):", queensNdx, numqueens); Console.Write("{"); for (int r = 0; numqueens > r; ++r) { Console.Write("({0}, {1}), ", (char)('a' + r), arrNqueens[r]); } Console.WriteLine("}"); for (int r = 0; numqueens > r; ++r, Console.WriteLine()) { Console.Write("'{0}'", numqueens - 1 - r); for (int c = 0; numqueens > c; ++c) { Console.Write("'{0}'", (numqueens - 1 - r) == arrNqueens[c] ? 'Q' : '.'); } } Console.Write("' '"); for (int c = 0; numqueens > c; ++c) { Console.Write("'{0}'", (char)('a' + c)); } Console.WriteLine("\n"); Console.WriteLine(new string('-', 40)); //pers = new Person("John", 32); pers = new Person { Name = "I.M. Computer", Age = 32 }; Trace.Assert(pers.GetType() == typeof(Person), "Debug Error: Type mismatch"); Trace.Assert(pers is Object, "Trace Error: Type inheritance mismatch"); Console.WriteLine("{0}", pers.ToString()); Console.Write("pers.Age = {0}: ", 33); pers.Age = 33; Console.WriteLine("{0}", pers.ToString()); Console.WriteLine(new string('-', 40)); }
/** DocComment: * <p>Brief description.</p> * @param args - array of command-line arguments */ /// <summary>Main entry point.</summary> /// <param name="args">An array</param> /// <returns>The exit code.</returns> static int Main(string[] args) { OptsRecord opts = new OptsRecord() { Name = "World", Num = 0, IsExpt2 = false }; var options = new Mono.Options.OptionSet() { { "u|user="******"user name", (string v) => opts.Name = v }, { "n|num=", "number", (int v) => opts.Num = v }, { "2|expt2", "expt 2 n", v => opts.IsExpt2 = true }, { "h|help", "show this message", v => showHelp = true }, //v != null }, }; IO.Stream traceOut = IO.File.Create("trace.log"); TraceListener[] lstnrs = { new TextWriterTraceListener(System.Console.Out), new TextWriterTraceListener(traceOut) }; foreach (var lstnr in lstnrs) { Trace.Listeners.Add(lstnr); // /define:[TRACE|DEBUG] } ParseCmdopts(args, options); string envRsrcPath = Environment.GetEnvironmentVariable("RSRC_PATH"); string rsrcPath = null != envRsrcPath ? envRsrcPath : "resources"; string iniStr = String.Empty, jsonStr = String.Empty, yamlStr = String.Empty; try { //iniStr = (new IO.StreamReader(rsrcPath + "/prac.conf")).ReadToEnd(); iniStr = IO.File.ReadAllText(rsrcPath + "/prac.conf"); //jsonStr = IO.File.ReadAllText(rsrcPath + "/prac.json"); //yamlStr = IO.File.ReadAllText(rsrcPath + "/prac.yaml"); } catch (Exception exc0) { Console.Error.WriteLine("(exc: {0}) Bad env var RSRC_PATH: {1}\n", exc0, rsrcPath); try { iniStr = Util.GetFromResources("prac.conf", assembly); //jsonStr = Util.GetFromResources("prac.json", assembly, // fromType.Namespace + ".resources"); //yamlStr = Util.GetFromResources("prac.yaml", assembly); } catch (Exception exc1) { throw; Environment.Exit(1); } } //var cfgIni = new KeyFile.GKeyFile(); //cfgIni.LoadFromData(iniStr); var cfgIni = new IniParser.Parser.IniDataParser().Parse(iniStr); //var defn1 = new {hostname = String.Empty, domain = String.Empty, // file1 = new {path = String.Empty, ext = String.Empty}, // user1 = new {name = String.Empty, age = 0}}; //var anonType = NewtJson.JsonConvert.DeserializeAnonymousType( // jsonStr, defn1); //var dictRootJson = NewtJson.JsonConvert.DeserializeObject< // SysCollGen.Dictionary<string, object>>(jsonStr); //var dictUserJson = NewtJson.JsonConvert.DeserializeObject< // SysCollGen.Dictionary<string, object>>( // String.Format("{0}", dictRootJson["user1"])); //var deserializer = new YamlDotNet.Serialization.Deserializer(); //var objRootYaml = deserializer.Deserialize<YamlConfig>( // new IO.StringReader(yamlStr)); Tuple <string, string, string>[] arrTups = { //Tuple.Create(Util.IniCfgToStr(cfgIni), // cfgIni.GetValue("default", "domain"), // cfgIni.GetValue("user1", "name")), Tuple.Create(Util.IniCfgToStr(cfgIni), cfgIni["default"]["domain"], cfgIni["user1"]["name"]) //, //Tuple.Create(anonType.ToString(), // String.Format("{0}", anonType.domain), // String.Format("{0}", anonType.user1.name)), //Tuple.Create(Util.MkString(dictRootJson.ToArray(), beg: "{", // stop: "}"), // String.Format("{0}", dictRootJson["domain"]), // String.Format("{0}", dictUserJson["name"])), //Tuple.Create(yamlStr, // String.Format("{0}", objRootYaml.domain), // String.Format("{0}", objRootYaml.user1["name"])) }; foreach (Tuple <string, string, string> tup in arrTups) { Console.WriteLine("config: {0}", tup.Item1); Console.WriteLine("domain: {0}", tup.Item2); Console.WriteLine("user1Name: {0}\n", tup.Item3); } RunIntro(opts.Name, opts.Num, opts.IsExpt2, rsrcPath); //Trace.Fail("Trace example"); Trace.Flush(); traceOut.Close(); return(0); }