/ src / common / UnitTests-CommonUtils / ModulesRegistry.Tests.cpp
ModulesRegistry.Tests.cpp
  1  #include "pch.h"
  2  #include "TestHelpers.h"
  3  #include <modulesRegistry.h>
  4  
  5  using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  6  
  7  namespace UnitTestsCommonUtils
  8  {
  9      static std::wstring GetInstallDir()
 10      {
 11          wchar_t path[MAX_PATH];
 12          GetModuleFileNameW(nullptr, path, MAX_PATH);
 13          return std::filesystem::path{ path }.parent_path().wstring();
 14      }
 15  
 16      TEST_CLASS(ModulesRegistryTests)
 17      {
 18      public:
 19          // Test that all changeset generator functions return valid changesets
 20          TEST_METHOD(GetSvgPreviewHandlerChangeSet_ReturnsChangeSet)
 21          {
 22              auto changeSet = getSvgPreviewHandlerChangeSet(GetInstallDir(), false);
 23  
 24              Assert::IsFalse(changeSet.changes.empty());
 25          }
 26  
 27          TEST_METHOD(GetSvgThumbnailProviderChangeSet_ReturnsChangeSet)
 28          {
 29              auto changeSet = getSvgThumbnailHandlerChangeSet(GetInstallDir(), false);
 30  
 31              Assert::IsFalse(changeSet.changes.empty());
 32          }
 33  
 34          TEST_METHOD(GetMarkdownPreviewHandlerChangeSet_ReturnsChangeSet)
 35          {
 36              auto changeSet = getMdPreviewHandlerChangeSet(GetInstallDir(), false);
 37  
 38              Assert::IsFalse(changeSet.changes.empty());
 39          }
 40  
 41          TEST_METHOD(GetMonacoPreviewHandlerChangeSet_ReturnsChangeSet)
 42          {
 43              auto changeSet = getMonacoPreviewHandlerChangeSet(GetInstallDir(), false);
 44  
 45              Assert::IsFalse(changeSet.changes.empty());
 46          }
 47  
 48          TEST_METHOD(GetPdfPreviewHandlerChangeSet_ReturnsChangeSet)
 49          {
 50              auto changeSet = getPdfPreviewHandlerChangeSet(GetInstallDir(), false);
 51  
 52              Assert::IsFalse(changeSet.changes.empty());
 53          }
 54  
 55          TEST_METHOD(GetPdfThumbnailProviderChangeSet_ReturnsChangeSet)
 56          {
 57              auto changeSet = getPdfThumbnailHandlerChangeSet(GetInstallDir(), false);
 58  
 59              Assert::IsFalse(changeSet.changes.empty());
 60          }
 61  
 62          TEST_METHOD(GetGcodePreviewHandlerChangeSet_ReturnsChangeSet)
 63          {
 64              auto changeSet = getGcodePreviewHandlerChangeSet(GetInstallDir(), false);
 65  
 66              Assert::IsFalse(changeSet.changes.empty());
 67          }
 68  
 69          TEST_METHOD(GetGcodeThumbnailProviderChangeSet_ReturnsChangeSet)
 70          {
 71              auto changeSet = getGcodeThumbnailHandlerChangeSet(GetInstallDir(), false);
 72  
 73              Assert::IsFalse(changeSet.changes.empty());
 74          }
 75  
 76          TEST_METHOD(GetStlThumbnailProviderChangeSet_ReturnsChangeSet)
 77          {
 78              auto changeSet = getStlThumbnailHandlerChangeSet(GetInstallDir(), false);
 79  
 80              Assert::IsFalse(changeSet.changes.empty());
 81          }
 82  
 83          TEST_METHOD(GetQoiPreviewHandlerChangeSet_ReturnsChangeSet)
 84          {
 85              auto changeSet = getQoiPreviewHandlerChangeSet(GetInstallDir(), false);
 86  
 87              Assert::IsFalse(changeSet.changes.empty());
 88          }
 89  
 90          TEST_METHOD(GetQoiThumbnailProviderChangeSet_ReturnsChangeSet)
 91          {
 92              auto changeSet = getQoiThumbnailHandlerChangeSet(GetInstallDir(), false);
 93  
 94              Assert::IsFalse(changeSet.changes.empty());
 95          }
 96  
 97          // Test enabled vs disabled state
 98          TEST_METHOD(ChangeSet_EnabledVsDisabled_MayDiffer)
 99          {
100              auto enabledSet = getSvgPreviewHandlerChangeSet(GetInstallDir(), true);
101              auto disabledSet = getSvgPreviewHandlerChangeSet(GetInstallDir(), false);
102  
103              // Both should be valid change sets
104              Assert::IsFalse(enabledSet.changes.empty());
105              Assert::IsFalse(disabledSet.changes.empty());
106          }
107  
108          // Test getAllOnByDefaultModulesChangeSets
109          TEST_METHOD(GetAllOnByDefaultModulesChangeSets_ReturnsMultipleChangeSets)
110          {
111              auto changeSets = getAllOnByDefaultModulesChangeSets(GetInstallDir());
112  
113              // Should return multiple changesets for all default-enabled modules
114              Assert::IsTrue(changeSets.size() > 0);
115          }
116  
117          // Test getAllModulesChangeSets
118          TEST_METHOD(GetAllModulesChangeSets_ReturnsChangeSets)
119          {
120              auto changeSets = getAllModulesChangeSets(GetInstallDir());
121  
122              // Should return changesets for all modules
123              Assert::IsTrue(changeSets.size() > 0);
124          }
125  
126          TEST_METHOD(GetAllModulesChangeSets_ContainsMoreThanOnByDefault)
127          {
128              auto allSets = getAllModulesChangeSets(GetInstallDir());
129              auto defaultSets = getAllOnByDefaultModulesChangeSets(GetInstallDir());
130  
131              // All modules should be >= on-by-default modules
132              Assert::IsTrue(allSets.size() >= defaultSets.size());
133          }
134  
135          // Test that changesets have valid structure
136          TEST_METHOD(ChangeSet_HasValidKeyPath)
137          {
138              auto changeSet = getSvgPreviewHandlerChangeSet(GetInstallDir(), false);
139  
140              Assert::IsFalse(changeSet.changes.empty());
141          }
142  
143          // Test all changeset functions don't crash
144          TEST_METHOD(AllChangeSetFunctions_DoNotCrash)
145          {
146              auto installDir = GetInstallDir();
147              getSvgPreviewHandlerChangeSet(installDir, true);
148              getSvgPreviewHandlerChangeSet(installDir, false);
149              getSvgThumbnailHandlerChangeSet(installDir, true);
150              getSvgThumbnailHandlerChangeSet(installDir, false);
151              getMdPreviewHandlerChangeSet(installDir, true);
152              getMdPreviewHandlerChangeSet(installDir, false);
153              getMonacoPreviewHandlerChangeSet(installDir, true);
154              getMonacoPreviewHandlerChangeSet(installDir, false);
155              getPdfPreviewHandlerChangeSet(installDir, true);
156              getPdfPreviewHandlerChangeSet(installDir, false);
157              getPdfThumbnailHandlerChangeSet(installDir, true);
158              getPdfThumbnailHandlerChangeSet(installDir, false);
159              getGcodePreviewHandlerChangeSet(installDir, true);
160              getGcodePreviewHandlerChangeSet(installDir, false);
161              getGcodeThumbnailHandlerChangeSet(installDir, true);
162              getGcodeThumbnailHandlerChangeSet(installDir, false);
163              getStlThumbnailHandlerChangeSet(installDir, true);
164              getStlThumbnailHandlerChangeSet(installDir, false);
165              getQoiPreviewHandlerChangeSet(installDir, true);
166              getQoiPreviewHandlerChangeSet(installDir, false);
167              getQoiThumbnailHandlerChangeSet(installDir, true);
168              getQoiThumbnailHandlerChangeSet(installDir, false);
169  
170              Assert::IsTrue(true);
171          }
172      };
173  }