ResultHelperTests.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.Globalization;
  7  using Microsoft.CmdPal.Ext.TimeDate.Helpers;
  8  using Microsoft.VisualStudio.TestTools.UnitTesting;
  9  
 10  namespace Microsoft.CmdPal.Ext.TimeDate.UnitTests;
 11  
 12  [TestClass]
 13  public class ResultHelperTests
 14  {
 15      private CultureInfo originalCulture;
 16      private CultureInfo originalUiCulture;
 17  
 18      [TestInitialize]
 19      public void Setup()
 20      {
 21          // Set culture to 'en-us'
 22          originalCulture = CultureInfo.CurrentCulture;
 23          CultureInfo.CurrentCulture = new CultureInfo("en-us", false);
 24          originalUiCulture = CultureInfo.CurrentUICulture;
 25          CultureInfo.CurrentUICulture = new CultureInfo("en-us", false);
 26      }
 27  
 28      [TestCleanup]
 29      public void CleanUp()
 30      {
 31          // Set culture to original value
 32          CultureInfo.CurrentCulture = originalCulture;
 33          CultureInfo.CurrentUICulture = originalUiCulture;
 34      }
 35  
 36      [TestMethod]
 37      public void ResultHelper_CreateListItem_ReturnsValidItem()
 38      {
 39          // Setup
 40          var availableResult = new AvailableResult
 41          {
 42              Label = "Test Label",
 43              Value = "Test Value",
 44          };
 45  
 46          // Act
 47          var listItem = availableResult.ToListItem();
 48  
 49          // Assert
 50          Assert.IsNotNull(listItem);
 51          Assert.AreEqual("Test Value", listItem.Title);
 52          Assert.AreEqual("Test Label", listItem.Subtitle);
 53      }
 54  
 55      [TestMethod]
 56      public void ResultHelper_CreateListItem_HandlesNullInput()
 57      {
 58          AvailableResult availableResult = null;
 59  
 60          // Act & Assert
 61          Assert.ThrowsException<System.NullReferenceException>(() => availableResult.ToListItem());
 62      }
 63  
 64      [TestMethod]
 65      public void ResultHelper_CreateListItem_HandlesEmptyValues()
 66      {
 67          // Setup
 68          var availableResult = new AvailableResult
 69          {
 70              Label = string.Empty,
 71              Value = string.Empty,
 72          };
 73  
 74          // Act
 75          var listItem = availableResult.ToListItem();
 76  
 77          // Assert
 78          Assert.IsNotNull(listItem);
 79          Assert.AreEqual("Copy", listItem.Title);
 80          Assert.AreEqual(string.Empty, listItem.Subtitle);
 81      }
 82  
 83      [TestMethod]
 84      public void ResultHelper_CreateListItem_WithIcon()
 85      {
 86          // Setup
 87          var availableResult = new AvailableResult
 88          {
 89              Label = "Test Label",
 90              Value = "Test Value",
 91              IconType = ResultIconType.Date,
 92          };
 93  
 94          // Act
 95          var listItem = availableResult.ToListItem();
 96  
 97          // Assert
 98          Assert.IsNotNull(listItem);
 99          Assert.AreEqual("Test Value", listItem.Title);
100          Assert.AreEqual("Test Label", listItem.Subtitle);
101          Assert.IsNotNull(listItem.Icon);
102      }
103  
104      [TestMethod]
105      public void ResultHelper_CreateListItem_WithLongText()
106      {
107          // Setup
108          var longText = new string('A', 1000);
109          var availableResult = new AvailableResult
110          {
111              Label = longText,
112              Value = longText,
113          };
114  
115          // Act
116          var listItem = availableResult.ToListItem();
117  
118          // Assert
119          Assert.IsNotNull(listItem);
120          Assert.AreEqual(longText, listItem.Title);
121          Assert.AreEqual(longText, listItem.Subtitle);
122      }
123  
124      [TestMethod]
125      public void ResultHelper_CreateListItem_WithSpecialCharacters()
126      {
127          // Setup
128          var specialText = "Test & < > \" ' \n \t";
129          var availableResult = new AvailableResult
130          {
131              Label = specialText,
132              Value = specialText,
133          };
134  
135          // Act
136          var listItem = availableResult.ToListItem();
137  
138          // Assert
139          Assert.IsNotNull(listItem);
140          Assert.AreEqual(specialText, listItem.Title);
141          Assert.AreEqual(specialText, listItem.Subtitle);
142      }
143  }