QueryTests.cs
1 // Copyright (c) Microsoft Corporation 2 // The Microsoft Corporation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Linq; 6 using Microsoft.CmdPal.Ext.Calc.Helper; 7 using Microsoft.CmdPal.Ext.Calc.Pages; 8 using Microsoft.CmdPal.Ext.UnitTestBase; 9 using Microsoft.VisualStudio.TestTools.UnitTesting; 10 11 namespace Microsoft.CmdPal.Ext.Calc.UnitTests; 12 13 [TestClass] 14 public class QueryTests : CommandPaletteUnitTestBase 15 { 16 [DataTestMethod] 17 [DataRow("2+2", "4")] 18 [DataRow("5*3", "15")] 19 [DataRow("10/2", "5")] 20 [DataRow("sqrt(16)", "4")] 21 [DataRow("2^3", "8")] 22 public void TopLevelPageQueryTest(string input, string expectedResult) 23 { 24 var settings = new Settings(); 25 var page = new CalculatorListPage(settings); 26 27 // Simulate query execution 28 page.UpdateSearchText(string.Empty, input); 29 var result = page.GetItems(); 30 31 Assert.IsTrue(result.Length == 1, "Valid input should always return result"); 32 33 var firstResult = result.FirstOrDefault(); 34 35 Assert.IsNotNull(result); 36 Assert.IsTrue( 37 firstResult.Title.Contains(expectedResult), 38 $"Expected result to contain '{expectedResult}' but got '{firstResult.Title}'"); 39 } 40 41 [TestMethod] 42 public void EmptyQueryTest() 43 { 44 var settings = new Settings(); 45 var page = new CalculatorListPage(settings); 46 page.UpdateSearchText("abc", string.Empty); 47 var results = page.GetItems(); 48 Assert.IsNotNull(results); 49 50 var firstItem = results.FirstOrDefault(); 51 Assert.AreEqual("Type an equation...", firstItem.Title); 52 } 53 54 [TestMethod] 55 public void InvalidExpressionTest() 56 { 57 var settings = new Settings(); 58 59 var page = new CalculatorListPage(settings); 60 61 // Simulate query execution 62 page.UpdateSearchText(string.Empty, "invalid expression"); 63 var result = page.GetItems().FirstOrDefault(); 64 65 Assert.AreEqual("Type an equation...", result.Title); 66 } 67 68 [DataTestMethod] 69 [DataRow("sin(60)", "-0.30481", CalculateEngine.TrigMode.Radians)] 70 [DataRow("sin(60)", "0.866025", CalculateEngine.TrigMode.Degrees)] 71 [DataRow("sin(60)", "0.809016", CalculateEngine.TrigMode.Gradians)] 72 public void TrigModeSettingsTest(string input, string expected, CalculateEngine.TrigMode trigMode) 73 { 74 var settings = new Settings(trigUnit: trigMode, outputUseEnglishFormat: true); 75 76 var page = new CalculatorListPage(settings); 77 78 page.UpdateSearchText(string.Empty, input); 79 var result = page.GetItems().FirstOrDefault(); 80 81 Assert.IsNotNull(result); 82 83 Assert.IsTrue(result.Title.Contains(expected, System.StringComparison.Ordinal), $"Calc trigMode convert result isn't correct. Current result: {result.Title}"); 84 } 85 }