/ src / modules / cmdpal / Tests / Microsoft.CmdPal.Ext.TimeDate.UnitTests / TimeDateCalculatorTests.cs
TimeDateCalculatorTests.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; 6 using System.Collections.Generic; 7 using System.Globalization; 8 using System.Linq; 9 using Microsoft.CmdPal.Ext.TimeDate.Helpers; 10 using Microsoft.CommandPalette.Extensions.Toolkit; 11 using Microsoft.VisualStudio.TestTools.UnitTesting; 12 13 namespace Microsoft.CmdPal.Ext.TimeDate.UnitTests; 14 15 [TestClass] 16 public class TimeDateCalculatorTests 17 { 18 private CultureInfo originalCulture; 19 private CultureInfo originalUiCulture; 20 21 [TestInitialize] 22 public void Setup() 23 { 24 // Set culture to 'en-us' 25 originalCulture = CultureInfo.CurrentCulture; 26 CultureInfo.CurrentCulture = new CultureInfo("en-us", false); 27 originalUiCulture = CultureInfo.CurrentUICulture; 28 CultureInfo.CurrentUICulture = new CultureInfo("en-us", false); 29 } 30 31 [TestCleanup] 32 public void Cleanup() 33 { 34 // Restore original culture 35 CultureInfo.CurrentCulture = originalCulture; 36 CultureInfo.CurrentUICulture = originalUiCulture; 37 } 38 39 [TestMethod] 40 public void CountAllResults() 41 { 42 // Setup 43 var settings = new SettingsManager(); 44 45 // Act 46 var results = TimeDateCalculator.ExecuteSearch(settings, string.Empty); 47 48 // Assert 49 Assert.IsTrue(results.Count > 0); 50 } 51 52 [TestMethod] 53 public void ValidateEmptyQuery() 54 { 55 // Setup 56 var settings = new SettingsManager(); 57 58 // Act 59 var results = TimeDateCalculator.ExecuteSearch(settings, string.Empty); 60 61 // Assert 62 Assert.IsNotNull(results); 63 } 64 65 [TestMethod] 66 public void ValidateNullQuery() 67 { 68 // Setup 69 var settings = new SettingsManager(); 70 71 // Act 72 var results = TimeDateCalculator.ExecuteSearch(settings, null); 73 74 // Assert 75 Assert.IsNotNull(results); 76 } 77 78 [TestMethod] 79 public void ValidateTimeParsing() 80 { 81 // Setup 82 var settings = new SettingsManager(); 83 var query = "time::10:30:45"; 84 85 // Act 86 var results = TimeDateCalculator.ExecuteSearch(settings, query); 87 88 // Assert 89 Assert.IsNotNull(results); 90 Assert.IsTrue(results.Count >= 0); // May have 0 results due to invalid format, but shouldn't crash 91 } 92 93 [TestMethod] 94 public void ValidateDateParsing() 95 { 96 // Setup 97 var settings = new SettingsManager(); 98 var query = "date::12/25/2023"; 99 100 // Act 101 var results = TimeDateCalculator.ExecuteSearch(settings, query); 102 103 // Assert 104 Assert.IsNotNull(results); 105 Assert.IsTrue(results.Count >= 0); // May have 0 results due to invalid format, but shouldn't crash 106 } 107 108 [TestMethod] 109 public void ValidateCommonQueries() 110 { 111 // Setup 112 var settings = new SettingsManager(); 113 var queries = new[] { "time", "date", "now", "current" }; 114 115 foreach (var query in queries) 116 { 117 // Act 118 var results = TimeDateCalculator.ExecuteSearch(settings, query); 119 120 // Assert 121 Assert.IsNotNull(results, $"Results should not be null for query: {query}"); 122 } 123 } 124 }