void myFunc(double x, string result)
        {
            var pc  = new PrefixConversion();
            var res = pc.UnitConversion(x);

            Console.WriteLine(res);
            Assert.AreEqual(res, result);
        }
        public void TestMethod1()
        {
            var pc  = new PrefixConversion();
            var res = pc.UnitConversion(1.0E7);

            Console.WriteLine(res);
            Assert.AreEqual(res, "10 M");
        }
Ejemplo n.º 3
0
 public void PrefixMicroConversion()
 {
     var settings = MockSettings.Create();
     var conversion = PrefixConversion.Create(settings.Metres, settings.Micro);
     settings.Metres.PrefixConversions.Add(conversion);
     Assert.AreEqual("micrometres/1000000", conversion.ToSi);
     Assert.AreEqual("1000000*metres", conversion.FromSi);
     Assert.AreEqual("1 µm = 1E-06 m", conversion.SymbolConversion);
     Assert.AreEqual(true, conversion.CanRoundtrip);
 }
Ejemplo n.º 4
0
        public static void CreateMilligrams()
        {
            using var settings = MockSettings.Create();
            var conversion = PrefixConversion.Create(settings.Grams, settings.Milli);

            settings.Grams.PrefixConversions.Add(conversion);
            Assert.AreEqual("Milligrams", conversion.Name);
            Assert.AreEqual("mg", conversion.Symbol);
            Assert.AreEqual(1E-6, conversion.Factor);
        }
Ejemplo n.º 5
0
        public static void CreateMilliAmperes()
        {
            using var settings = MockSettings.Create();
            var conversion = PrefixConversion.Create(settings.Amperes, settings.Milli);

            settings.Amperes.PrefixConversions.Add(conversion);
            Assert.AreEqual("Milliamperes", conversion.Name);
            Assert.AreEqual("mA", conversion.Symbol);
            Assert.AreEqual(0.001, conversion.Factor);
        }
Ejemplo n.º 6
0
 public void NestedFactorConversion()
 {
     var settings = MockSettings.Create();
     var conversion = PrefixConversion.Create(settings.Grams, settings.Milli);
     settings.Grams.PrefixConversions.Add(conversion);
     Assert.AreEqual("milligrams/1000000", conversion.ToSi);
     Assert.AreEqual("1000000*kilograms", conversion.FromSi);
     Assert.AreEqual("1 mg = 1E-06 kg", conversion.SymbolConversion);
     Assert.AreEqual(true, conversion.CanRoundtrip);
 }
Ejemplo n.º 7
0
        public async Task NestedFactorConversion()
        {
            var settings   = MockSettings.Create();
            var conversion = PrefixConversion.Create(settings.Grams, settings.Milli);

            settings.Grams.PrefixConversions.Add(conversion);
            Assert.AreEqual("milligrams / 1000000", conversion.ToSi);
            Assert.AreEqual("1000000 * kilograms", conversion.FromSi);
            Assert.AreEqual("1 mg = 1E-06 kg", await conversion.GetSymbolConversionAsync().ConfigureAwait(false));
            Assert.AreEqual(true, await conversion.CanRoundtripAsync().ConfigureAwait(false));
        }
Ejemplo n.º 8
0
        public async Task PrefixMicroConversion()
        {
            var settings   = MockSettings.Create();
            var conversion = PrefixConversion.Create(settings.Metres, settings.Micro);

            settings.Metres.PrefixConversions.Add(conversion);
            Assert.AreEqual("micrometres / 1000000", conversion.ToSi);
            Assert.AreEqual("1000000 * metres", conversion.FromSi);
            Assert.AreEqual("1 µm = 1E-06 m", await conversion.GetSymbolConversionAsync().ConfigureAwait(false));
            Assert.AreEqual(true, await conversion.CanRoundtripAsync().ConfigureAwait(false));
        }
Ejemplo n.º 9
0
        public void SquareMillimetres()
        {
            var settings    = MockSettings.Create();
            var millimetres = PrefixConversion.Create(settings.Metres, settings.Milli);

            settings.Metres.PrefixConversions.Add(millimetres);
            var millimetrePart = PartConversion.CreatePart(2, millimetres);
            var conversion     = PartConversion.Create(settings.Metres, millimetrePart);

            Assert.AreEqual("mm²", conversion.Symbol);
            Assert.AreEqual("SquareMillimetres", conversion.Name);
            Assert.AreEqual(1E-6, conversion.Factor);
        }
Ejemplo n.º 10
0
 public void PartConversionPrefix()
 {
     var settings = MockSettings.Create();
     var millimetreConversion = PrefixConversion.Create(settings.Metres, settings.Milli);
     settings.Metres.PrefixConversions.Add(millimetreConversion);
     var milliMetresPart = PartConversion.CreatePart(1, millimetreConversion);
     var secondsPart = PartConversion.CreatePart(-1, settings.Seconds);
     var conversion = PartConversion.Create(settings.MetresPerSecond, milliMetresPart, secondsPart);
     settings.MetresPerSecond.PartConversions.Add(conversion);
     Assert.AreEqual("millimetresPerSecond/1000", conversion.ToSi);
     Assert.AreEqual("1000*metresPerSecond", conversion.FromSi);
     Assert.AreEqual("1 mm/s = 0.001 m/s", conversion.SymbolConversion);
     Assert.AreEqual(true, conversion.CanRoundtrip);
 }
Ejemplo n.º 11
0
        public void MilliGramsPerCubicMetre()
        {
            var settings  = MockSettings.Create();
            var milligram = PrefixConversion.Create(settings.Grams, settings.Milli);

            settings.Grams.PrefixConversions.Add(milligram);
            var milliGramPart = PartConversion.CreatePart(1, milligram);
            var volumePart    = PartConversion.CreatePart(-1, settings.CubicMetres);
            var conversion    = PartConversion.Create(settings.Kilograms, milliGramPart, volumePart);

            Assert.AreEqual("mg/m³", conversion.Symbol);
            Assert.AreEqual("MilligramsPerCubicMetre", conversion.Name);
            Assert.AreEqual(1E-6, conversion.Factor);
        }
Ejemplo n.º 12
0
        public void SetIsUsedToTrueAddsConversion()
        {
            var settings         = MockSettings.Create();
            var prefixConversion = PrefixConversion.Create(settings.Amperes, settings.Milli);
            var conversionVm     = PrefixConversionVm.Create(settings.Amperes, settings.Milli);

            Assert.IsFalse(conversionVm.IsUsed);
            Assert.IsEmpty(settings.Amperes.PrefixConversions);

            conversionVm.IsUsed = true;
            var expected = new[] { prefixConversion };

            CollectionAssert.AreEqual(expected, settings.Amperes.PrefixConversions, PrefixConversionComparer.Default);
        }
Ejemplo n.º 13
0
        public async Task MilliMetresPerSecondCubed()
        {
            var settings    = MockSettings.Create();
            var millimetres = PrefixConversion.Create(settings.Metres, settings.Milli);

            settings.Metres.PrefixConversions.Add(millimetres);
            var metrePart  = PartConversion.CreatePart(1, millimetres);
            var secondPart = PartConversion.CreatePart(-2, settings.Seconds);
            var conversion = PartConversion.Create(settings.MetresPerSecondSquared, metrePart, secondPart);

            Assert.AreEqual("mm/s²", conversion.Symbol);
            Assert.AreEqual("MillimetresPerSecondSquared", conversion.Name);
            Assert.AreEqual(0.001, conversion.Factor);
            Assert.AreEqual(true, await conversion.CanRoundtripAsync().ConfigureAwait(false));
        }
Ejemplo n.º 14
0
        public static async Task CubicMillimetresAsync()
        {
            using var settings = MockSettings.Create();
            var millimetres = PrefixConversion.Create(settings.Metres, settings.Milli);

            settings.Metres.PrefixConversions.Add(millimetres);
            var conversion = PartConversion.Create(settings.CubicMetres, new PowerPart(3, millimetres));

            using var conversionVm = new PartConversionVm(settings.CubicMetres, conversion);
            Assert.AreEqual(1E-9, ((PartConversion)conversionVm.Conversion).Factor);
            Assert.AreEqual("cubicMillimetres / 1000000000", conversionVm.Conversion.ToSi);
            Assert.AreEqual("1000000000 * cubicMetres", conversionVm.Conversion.FromSi);
            Assert.AreEqual("1 mm³ = 1E-09 m³", await conversionVm.Conversion.GetSymbolConversionAsync().ConfigureAwait(false));
            Assert.AreEqual(true, await conversionVm.Conversion.CanRoundtripAsync().ConfigureAwait(false));
        }
Ejemplo n.º 15
0
        public void CubicMillimetres()
        {
            var settings    = MockSettings.Create();
            var millimetres = PrefixConversion.Create(settings.Metres, settings.Milli);

            settings.Metres.PrefixConversions.Add(millimetres);
            var conversion   = PartConversion.Create(settings.CubicMetres, new PartConversion.PowerPart(3, millimetres));
            var conversionVm = new PartConversionVm(settings.CubicMetres, conversion);

            Assert.AreEqual(1E-9, conversionVm.Conversion.Factor);
            Assert.AreEqual("cubicMillimetres/1000000000", conversionVm.Conversion.ToSi);
            Assert.AreEqual("1000000000*cubicMetres", conversionVm.Conversion.FromSi);
            Assert.AreEqual("1 mm³ = 1E-09 m³", conversionVm.Conversion.SymbolConversion);
            Assert.AreEqual(true, conversionVm.Conversion.CanRoundtrip);
        }
Ejemplo n.º 16
0
        public void IsUsed()
        {
            var settings    = MockSettings.Create();
            var millimetres = PrefixConversion.Create(settings.Metres, settings.Milli);

            settings.Metres.PrefixConversions.Add(millimetres);
            var conversion   = PartConversion.Create(settings.CubicMetres, new PartConversion.PowerPart(3, millimetres));
            var conversionVm = new PartConversionVm(settings.CubicMetres, conversion);

            conversionVm.IsUsed = true;
            CollectionAssert.Contains(settings.CubicMetres.PartConversions, conversion);

            conversionVm.IsUsed = false;
            CollectionAssert.DoesNotContain(settings.CubicMetres.PartConversions, conversion);
        }
Ejemplo n.º 17
0
        public async Task PartConversionPrefix()
        {
            var settings             = MockSettings.Create();
            var millimetreConversion = PrefixConversion.Create(settings.Metres, settings.Milli);

            settings.Metres.PrefixConversions.Add(millimetreConversion);
            var milliMetresPart = PartConversion.CreatePart(1, millimetreConversion);
            var secondsPart     = PartConversion.CreatePart(-1, settings.Seconds);
            var conversion      = PartConversion.Create(settings.MetresPerSecond, milliMetresPart, secondsPart);

            settings.MetresPerSecond.PartConversions.Add(conversion);
            Assert.AreEqual("millimetresPerSecond / 1000", conversion.ToSi);
            Assert.AreEqual("1000 * metresPerSecond", conversion.FromSi);
            Assert.AreEqual("1 mm/s = 0.001 m/s", await conversion.GetSymbolConversionAsync().ConfigureAwait(false));
            Assert.AreEqual(true, await conversion.CanRoundtripAsync().ConfigureAwait(false));
        }
Ejemplo n.º 18
0
 public void CentimetresPerMinute()
 {
     var settings = MockSettings.Create();
     var centi = new Prefix("Centi", "c", -2);
     settings.Prefixes.Add(centi);
     var centimetresConversion = PrefixConversion.Create(settings.Metres, centi);
     var minuteConversion = new FactorConversion("Minute", "min", 60);
     settings.Seconds.FactorConversions.Add(minuteConversion);
     settings.Metres.PrefixConversions.Add(centimetresConversion);
     var centiMetresPart = PartConversion.CreatePart(1, centimetresConversion);
     var minutesPart = PartConversion.CreatePart(-1, minuteConversion);
     var conversion = PartConversion.Create(settings.MetresPerSecond, centiMetresPart, minutesPart);
     settings.MetresPerSecond.PartConversions.Add(conversion);
     Assert.AreEqual("centimetresPerMinute/6000", conversion.ToSi);
     Assert.AreEqual("6000*metresPerSecond", conversion.FromSi);
     Assert.AreEqual("1 cm/min = 0.000166666666666667 m/s", conversion.SymbolConversion);
     Assert.AreEqual(true, conversion.CanRoundtrip);
 }
Ejemplo n.º 19
0
 /// <summary>
 /// Gets the conversion factor for the specified prefix conversion.
 /// </summary>
 /// <param name="prefConv"></param>
 /// <returns></returns>
 public static double GetPrefixConversionFactor(PrefixConversion prefConv)
 {
     return(_prefs[prefConv.ToString()]);
 }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            // File paths
            const string DATA_PATH = "./Data/Project 2_INFO_5101.csv";
            const string XML_PATH  = "./Data/Project2_INFO_5101.xml";
            // Load data
            List <Data> dataset = CSVFile.CSVDeserialize(DATA_PATH);

            // Print infix equations
            Console.WriteLine("\nSno \tInfix");
            foreach (Data result in dataset)
            {
                Console.WriteLine(result.Sno + ":\t" + result.Infix);
            }
            // Convert to postfix and store it in the data and then print
            PostfixConversion post = new PostfixConversion(dataset);
            int count = 0;

            Console.WriteLine("\nSno \tPostfix");
            foreach (string result in post.Convert())
            {
                dataset[count].Postfix = result;
                Console.WriteLine(dataset[count].Sno + ":\t" + dataset[count].Postfix);
                count++;
            }
            // Convert to prefix and store it in the data and then print
            PrefixConversion pre = new PrefixConversion(dataset);

            count = 0;
            Console.WriteLine("\nSno \tPrefix");
            foreach (string result in pre.Convert())
            {
                dataset[count].Prefix = result;
                Console.WriteLine(dataset[count].Sno + ":\t" + dataset[count].Prefix);
                count++;
            }
            // Calculate postfix result and store it in the data and then print
            count = 0;
            Console.WriteLine("\nSno \tPostFix Results");
            foreach (string result in ExpressionEvaluation.PostFixEvaluate(post.Convert()))
            {
                dataset[count].PostfixResult = result;
                Console.WriteLine(count + ":\t" + result);
                count++;
            }

            // Calculate prefix result and store it in the data and then print
            count = 0;
            Console.WriteLine("\nSno \tPrefix Results");
            foreach (string result in ExpressionEvaluation.PrefixEvaluate(pre.Convert()))
            {
                dataset[count].PrefixResult = result;
                Console.WriteLine(count + ":\t" + result);
                count++;
            }

            // Display all results
            CompareExpressions ce = new CompareExpressions();

            Console.WriteLine($"\nSno\t{"Infix",-20} {"Prefix",-17} {"Postfix",-17} {"Prefix Result",-15} {"Postfix Result",-15} {"Match",-15}");
            foreach (Data d in dataset)
            {
                Console.WriteLine($"{d.Sno}\t{d.Infix,-20} {d.Prefix,-17} {d.Postfix,-17} {d.PrefixResult,-15} {d.PostfixResult,-15} {(ce.Compare(d.PrefixResult, d.PostfixResult) == 1 ? "True" : "False"),-15}");
            }

            // Prompt user if they want to view the results in XML format
            ConsoleKey response;

            // Validation
            do
            {
                Console.Write("\nWould you like to view the results in XML format? [Y/N]:");
                response = Console.ReadKey(false).Key;   // true is intercept key (dont show), false is show
                if (response != ConsoleKey.Enter)
                {
                    Console.WriteLine();
                }
            } while (response != ConsoleKey.Y && response != ConsoleKey.N);

            // Generate XML if user selected yes, else don't
            if (response == ConsoleKey.Y)
            {
                Console.WriteLine("XML Generated!");
                // Uses XMLExtensions
                using (StreamWriter outputFile = new StreamWriter(XML_PATH))
                {
                    outputFile.WriteStartDocument();
                    outputFile.WriteStartRootElement();

                    foreach (Data d in dataset)
                    {
                        outputFile.WriteStartElement();
                        outputFile.WriteAttribute("sno", d.Sno.ToString());
                        outputFile.WriteAttribute("infix", d.Infix);
                        outputFile.WriteAttribute("prefix", d.Prefix);
                        outputFile.WriteAttribute("postfix", d.Postfix);
                        outputFile.WriteAttribute("evaluation", d.PostfixResult);
                        outputFile.WriteAttribute("comparison", (ce.Compare(d.PrefixResult, d.PostfixResult) == 1 ? "True" : "False"));
                        outputFile.WriteEndElement();
                    }

                    outputFile.WriteEndRootElement();
                }

                // Opens XML in Google Chrome browser
                Process.Start(@"cmd.exe ", @$ "/c start chrome {XML_PATH}");
            }
        }