diff --git a/src/CalcViewModel/DataLoaders/DataLoaderMockConstants.h b/src/CalcViewModel/DataLoaders/DataLoaderMockConstants.h
index 02e7e349..1049a770 100644
--- a/src/CalcViewModel/DataLoaders/DataLoaderMockConstants.h
+++ b/src/CalcViewModel/DataLoaders/DataLoaderMockConstants.h
@@ -7,7 +7,7 @@ namespace CalculatorApp
{
namespace DataLoaders
{
- static constexpr auto sc_MetadataUriLocalizeFor = L"https://go.microsoft.com/fwlink/?linkid=2091028&localizeFor=";
- static constexpr auto sc_RatiosUriRelativeTo = L"https://go.microsoft.com/fwlink/?linkid=2091307&localCurrency=";
+ static constexpr auto sc_MetadataUriLocalizeFor = L"http://localhost/calctesting/file/?id=currency+static+data&localizeFor=";
+ static constexpr auto sc_RatiosUriRelativeTo = L"http://localhost/calctesting/file/?id=currency+converter+data&localCurrency=";
}
}
diff --git a/src/Calculator.sln b/src/Calculator.sln
index 9458f929..cab7e126 100644
--- a/src/Calculator.sln
+++ b/src/Calculator.sln
@@ -29,146 +29,25 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TraceLogging", "TraceLoggin
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CalcViewModelCopyForUT", "CalcViewModelCopyForUT\CalcViewModelCopyForUT.vcxproj", "{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CalculatorUITestsService", "CalculatorUITestsService\CalculatorUITestsService.csproj", "{779F9E46-8970-4B48-AA04-85CFA54641EB}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM.ActiveCfg = Debug|ARM
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM.Build.0 = Debug|ARM
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM64.Build.0 = Debug|ARM64
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|x64.ActiveCfg = Debug|x64
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|x64.Build.0 = Debug|x64
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|x86.ActiveCfg = Debug|Win32
- {311E866D-8B93-4609-A691-265941FEE101}.Debug|x86.Build.0 = Debug|Win32
- {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM.ActiveCfg = Release|ARM
- {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM.Build.0 = Release|ARM
- {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM64.ActiveCfg = Release|ARM64
- {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM64.Build.0 = Release|ARM64
- {311E866D-8B93-4609-A691-265941FEE101}.Release|x64.ActiveCfg = Release|x64
- {311E866D-8B93-4609-A691-265941FEE101}.Release|x64.Build.0 = Release|x64
- {311E866D-8B93-4609-A691-265941FEE101}.Release|x86.ActiveCfg = Release|Win32
- {311E866D-8B93-4609-A691-265941FEE101}.Release|x86.Build.0 = Release|Win32
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM.ActiveCfg = Debug|ARM
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM.Build.0 = Debug|ARM
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM64.Build.0 = Debug|ARM64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x64.ActiveCfg = Debug|x64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x64.Build.0 = Debug|x64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x86.ActiveCfg = Debug|Win32
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x86.Build.0 = Debug|Win32
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM.ActiveCfg = Release|ARM
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM.Build.0 = Release|ARM
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM64.ActiveCfg = Release|ARM64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM64.Build.0 = Release|ARM64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x64.ActiveCfg = Release|x64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x64.Build.0 = Release|x64
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x86.ActiveCfg = Release|Win32
- {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x86.Build.0 = Release|Win32
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|ARM.ActiveCfg = Debug|ARM
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x64.ActiveCfg = Debug|x64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x64.Build.0 = Debug|x64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x64.Deploy.0 = Debug|x64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x86.ActiveCfg = Debug|Win32
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x86.Build.0 = Debug|Win32
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x86.Deploy.0 = Debug|Win32
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|ARM.ActiveCfg = Release|ARM
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|ARM64.ActiveCfg = Release|ARM64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x64.ActiveCfg = Release|x64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x64.Build.0 = Release|x64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x64.Deploy.0 = Release|x64
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x86.ActiveCfg = Release|Win32
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x86.Build.0 = Release|Win32
- {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x86.Deploy.0 = Release|Win32
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM.Build.0 = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM64.Build.0 = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x64.Build.0 = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x86.Build.0 = Debug|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM.ActiveCfg = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM.Build.0 = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM64.ActiveCfg = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM64.Build.0 = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x64.ActiveCfg = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x64.Build.0 = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x86.ActiveCfg = Release|Any CPU
- {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x86.Build.0 = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM.Build.0 = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM64.Build.0 = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x64.Build.0 = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x86.Build.0 = Debug|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM.ActiveCfg = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM.Build.0 = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM64.ActiveCfg = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM64.Build.0 = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x64.ActiveCfg = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x64.Build.0 = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x86.ActiveCfg = Release|Any CPU
- {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x86.Build.0 = Release|Any CPU
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM.ActiveCfg = Debug|ARM
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM.Build.0 = Debug|ARM
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM64.Build.0 = Debug|ARM64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x64.ActiveCfg = Debug|x64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x64.Build.0 = Debug|x64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x86.ActiveCfg = Debug|Win32
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x86.Build.0 = Debug|Win32
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM.ActiveCfg = Release|ARM
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM.Build.0 = Release|ARM
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM64.ActiveCfg = Release|ARM64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM64.Build.0 = Release|ARM64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x64.ActiveCfg = Release|x64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x64.Build.0 = Release|x64
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x86.ActiveCfg = Release|Win32
- {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x86.Build.0 = Release|Win32
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM.ActiveCfg = Debug|ARM
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM.Build.0 = Debug|ARM
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM64.Build.0 = Debug|ARM64
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|x64.ActiveCfg = Debug|x64
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|x64.Build.0 = Debug|x64
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|x86.ActiveCfg = Debug|Win32
- {E727A92B-F149-492C-8117-C039A298719B}.Debug|x86.Build.0 = Debug|Win32
- {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM.ActiveCfg = Release|ARM
- {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM.Build.0 = Release|ARM
- {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM64.ActiveCfg = Release|ARM64
- {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM64.Build.0 = Release|ARM64
- {E727A92B-F149-492C-8117-C039A298719B}.Release|x64.ActiveCfg = Release|x64
- {E727A92B-F149-492C-8117-C039A298719B}.Release|x64.Build.0 = Release|x64
- {E727A92B-F149-492C-8117-C039A298719B}.Release|x86.ActiveCfg = Release|Win32
- {E727A92B-F149-492C-8117-C039A298719B}.Release|x86.Build.0 = Release|Win32
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM.ActiveCfg = Debug|ARM
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM.Build.0 = Debug|ARM
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM64.Build.0 = Debug|ARM64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x64.ActiveCfg = Debug|x64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x64.Build.0 = Debug|x64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x86.ActiveCfg = Debug|Win32
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x86.Build.0 = Debug|Win32
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM.ActiveCfg = Release|ARM
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM.Build.0 = Release|ARM
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM64.ActiveCfg = Release|ARM64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM64.Build.0 = Release|ARM64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x64.ActiveCfg = Release|x64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x64.Build.0 = Release|x64
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x86.ActiveCfg = Release|Win32
- {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x86.Build.0 = Release|Win32
+ {3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|ARM.ActiveCfg = Debug|ARM
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|ARM.Build.0 = Debug|ARM
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|ARM.Deploy.0 = Debug|ARM
@@ -181,6 +60,9 @@ Global
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|x86.ActiveCfg = Debug|x86
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|x86.Build.0 = Debug|x86
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Debug|x86.Deploy.0 = Debug|x86
+ {3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|Any CPU.Deploy.0 = Release|Any CPU
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|ARM.ActiveCfg = Release|ARM
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|ARM.Build.0 = Release|ARM
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|ARM.Deploy.0 = Release|ARM
@@ -193,6 +75,170 @@ Global
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|x86.ActiveCfg = Release|x86
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|x86.Build.0 = Release|x86
{3B773403-B0D6-4F9A-948E-512A7A5FB315}.Release|x86.Deploy.0 = Release|x86
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|Any CPU.Build.0 = Debug|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM.ActiveCfg = Debug|ARM
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM.Build.0 = Debug|ARM
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|ARM64.Build.0 = Debug|ARM64
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|x64.ActiveCfg = Debug|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|x64.Build.0 = Debug|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|x86.ActiveCfg = Debug|Win32
+ {311E866D-8B93-4609-A691-265941FEE101}.Debug|x86.Build.0 = Debug|Win32
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|Any CPU.ActiveCfg = Release|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|Any CPU.Build.0 = Release|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM.ActiveCfg = Release|ARM
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM.Build.0 = Release|ARM
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM64.ActiveCfg = Release|ARM64
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|ARM64.Build.0 = Release|ARM64
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|x64.ActiveCfg = Release|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|x64.Build.0 = Release|x64
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|x86.ActiveCfg = Release|Win32
+ {311E866D-8B93-4609-A691-265941FEE101}.Release|x86.Build.0 = Release|Win32
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|Any CPU.Build.0 = Debug|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM.ActiveCfg = Debug|ARM
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM.Build.0 = Debug|ARM
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|ARM64.Build.0 = Debug|ARM64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x64.ActiveCfg = Debug|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x64.Build.0 = Debug|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x86.ActiveCfg = Debug|Win32
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Debug|x86.Build.0 = Debug|Win32
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|Any CPU.ActiveCfg = Release|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|Any CPU.Build.0 = Release|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM.ActiveCfg = Release|ARM
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM.Build.0 = Release|ARM
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM64.ActiveCfg = Release|ARM64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|ARM64.Build.0 = Release|ARM64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x64.ActiveCfg = Release|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x64.Build.0 = Release|x64
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x86.ActiveCfg = Release|Win32
+ {812D1A7B-B8AC-49E4-8E6D-AF5D59500D56}.Release|x86.Build.0 = Release|Win32
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|Any CPU.Build.0 = Debug|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|Any CPU.Deploy.0 = Debug|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|ARM.ActiveCfg = Debug|ARM
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x64.ActiveCfg = Debug|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x64.Build.0 = Debug|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x64.Deploy.0 = Debug|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x86.ActiveCfg = Debug|Win32
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x86.Build.0 = Debug|Win32
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Debug|x86.Deploy.0 = Debug|Win32
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|Any CPU.ActiveCfg = Release|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|Any CPU.Build.0 = Release|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|Any CPU.Deploy.0 = Release|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|ARM.ActiveCfg = Release|ARM
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|ARM64.ActiveCfg = Release|ARM64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x64.ActiveCfg = Release|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x64.Build.0 = Release|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x64.Deploy.0 = Release|x64
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x86.ActiveCfg = Release|Win32
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x86.Build.0 = Release|Win32
+ {D3BAED2C-4B07-4E1D-8807-9D6499450349}.Release|x86.Deploy.0 = Release|Win32
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM.Build.0 = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x64.Build.0 = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|x86.Build.0 = Debug|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM.ActiveCfg = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM.Build.0 = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|ARM64.Build.0 = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x64.ActiveCfg = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x64.Build.0 = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x86.ActiveCfg = Release|Any CPU
+ {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|x86.Build.0 = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM.Build.0 = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x64.Build.0 = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Debug|x86.Build.0 = Debug|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM.ActiveCfg = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM.Build.0 = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|ARM64.Build.0 = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x64.ActiveCfg = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x64.Build.0 = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x86.ActiveCfg = Release|Any CPU
+ {96454213-94AF-457D-9DF9-B14F80E7770F}.Release|x86.Build.0 = Release|Any CPU
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|Any CPU.Build.0 = Debug|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM.ActiveCfg = Debug|ARM
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM.Build.0 = Debug|ARM
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|ARM64.Build.0 = Debug|ARM64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x64.ActiveCfg = Debug|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x64.Build.0 = Debug|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x86.ActiveCfg = Debug|Win32
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Debug|x86.Build.0 = Debug|Win32
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|Any CPU.ActiveCfg = Release|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|Any CPU.Build.0 = Release|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM.ActiveCfg = Release|ARM
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM.Build.0 = Release|ARM
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM64.ActiveCfg = Release|ARM64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|ARM64.Build.0 = Release|ARM64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x64.ActiveCfg = Release|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x64.Build.0 = Release|x64
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x86.ActiveCfg = Release|Win32
+ {52E03A58-B378-4F50-8BFB-F659FB85E790}.Release|x86.Build.0 = Release|Win32
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|Any CPU.Build.0 = Debug|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM.ActiveCfg = Debug|ARM
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM.Build.0 = Debug|ARM
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|ARM64.Build.0 = Debug|ARM64
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|x64.ActiveCfg = Debug|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|x64.Build.0 = Debug|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|x86.ActiveCfg = Debug|Win32
+ {E727A92B-F149-492C-8117-C039A298719B}.Debug|x86.Build.0 = Debug|Win32
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|Any CPU.ActiveCfg = Release|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|Any CPU.Build.0 = Release|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM.ActiveCfg = Release|ARM
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM.Build.0 = Release|ARM
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM64.ActiveCfg = Release|ARM64
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|ARM64.Build.0 = Release|ARM64
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|x64.ActiveCfg = Release|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|x64.Build.0 = Release|x64
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|x86.ActiveCfg = Release|Win32
+ {E727A92B-F149-492C-8117-C039A298719B}.Release|x86.Build.0 = Release|Win32
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|Any CPU.Build.0 = Debug|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM.ActiveCfg = Debug|ARM
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM.Build.0 = Debug|ARM
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|ARM64.Build.0 = Debug|ARM64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x64.ActiveCfg = Debug|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x64.Build.0 = Debug|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x86.ActiveCfg = Debug|Win32
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Debug|x86.Build.0 = Debug|Win32
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|Any CPU.ActiveCfg = Release|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|Any CPU.Build.0 = Release|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM.ActiveCfg = Release|ARM
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM.Build.0 = Release|ARM
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM64.ActiveCfg = Release|ARM64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|ARM64.Build.0 = Release|ARM64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x64.ActiveCfg = Release|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x64.Build.0 = Release|x64
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x86.ActiveCfg = Release|Win32
+ {FC81FF41-02CD-4CD9-9BC5-45A1E39AC6ED}.Release|x86.Build.0 = Release|Win32
+ {CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|Any CPU.Build.0 = Debug|x64
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|ARM.ActiveCfg = Debug|ARM
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|ARM.Build.0 = Debug|ARM
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|ARM64.ActiveCfg = Debug|ARM64
@@ -200,6 +246,8 @@ Global
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|x64.Build.0 = Debug|x64
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|x86.ActiveCfg = Debug|Win32
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Debug|x86.Build.0 = Debug|Win32
+ {CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|Any CPU.ActiveCfg = Release|x64
+ {CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|Any CPU.Build.0 = Release|x64
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|ARM.ActiveCfg = Release|ARM
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|ARM.Build.0 = Release|ARM
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|ARM64.ActiveCfg = Release|ARM64
@@ -207,6 +255,26 @@ Global
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|x64.Build.0 = Release|x64
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|x86.ActiveCfg = Release|Win32
{CC9B4FA7-D746-4F52-9401-0AD1B4D6B16D}.Release|x86.Build.0 = Release|Win32
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|ARM.Build.0 = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|x64.Build.0 = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Debug|x86.Build.0 = Debug|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|ARM.ActiveCfg = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|ARM.Build.0 = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|ARM64.Build.0 = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|x64.ActiveCfg = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|x64.Build.0 = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|x86.ActiveCfg = Release|Any CPU
+ {779F9E46-8970-4B48-AA04-85CFA54641EB}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/CalculatorUITestFramework/CalculatorUITestFramework.csproj b/src/CalculatorUITestFramework/CalculatorUITestFramework.csproj
index b022a4e2..da3a3c7c 100644
--- a/src/CalculatorUITestFramework/CalculatorUITestFramework.csproj
+++ b/src/CalculatorUITestFramework/CalculatorUITestFramework.csproj
@@ -2,6 +2,18 @@
net6.0
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
diff --git a/src/CalculatorUITestFramework/MockCurrencyConverterData.json b/src/CalculatorUITestFramework/MockCurrencyConverterData.json
new file mode 100644
index 00000000..89663674
--- /dev/null
+++ b/src/CalculatorUITestFramework/MockCurrencyConverterData.json
@@ -0,0 +1,42 @@
+[
+ {
+ "An": "MAR",
+ "Rt": 1.00
+ },
+ {
+ "An": "MON",
+ "Rt": 0.50
+ },
+ {
+ "An": "NEP",
+ "Rt": 0.00125
+ },
+ {
+ "An": "SAT",
+ "Rt": 0.25
+ },
+ {
+ "An": "URA",
+ "Rt": 2.75
+ },
+ {
+ "An": "VEN",
+ "Rt": 900.00
+ },
+ {
+ "An": "JUP",
+ "Rt": 1.23456789123456789
+ },
+ {
+ "An": "MER",
+ "Rt": 2.00
+ },
+ {
+ "An": "JPY",
+ "Rt": 0.00125
+ },
+ {
+ "An": "JOD",
+ "Rt": 0.25
+ }
+]
\ No newline at end of file
diff --git a/src/CalculatorUITestFramework/MockCurrencyStaticData.json b/src/CalculatorUITestFramework/MockCurrencyStaticData.json
new file mode 100644
index 00000000..27723be7
--- /dev/null
+++ b/src/CalculatorUITestFramework/MockCurrencyStaticData.json
@@ -0,0 +1,72 @@
+[
+ {
+ "CountryCode": "MAR",
+ "CountryName": "Mars",
+ "CurrencyCode": "MAR",
+ "CurrencyName": "The Martian Dollar",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "MON",
+ "CountryName": "Moon",
+ "CurrencyCode": "MON",
+ "CurrencyName": "Moon Bucks",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "NEP",
+ "CountryName": "Neptune",
+ "CurrencyCode": "NEP",
+ "CurrencyName": "Space Coins",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "SAT",
+ "CountryName": "Saturn",
+ "CurrencyCode": "SAT",
+ "CurrencyName": "Rings",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "URA",
+ "CountryName": "Uranus",
+ "CurrencyCode": "URA",
+ "CurrencyName": "Galaxy Credits",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "VEN",
+ "CountryName": "Venus",
+ "CurrencyCode": "VEN",
+ "CurrencyName": "Venusian Seashells",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "JUP",
+ "CountryName": "Jupiter",
+ "CurrencyCode": "JUP",
+ "CurrencyName": "Gas Money",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "MER",
+ "CountryName": "Mercury",
+ "CurrencyCode": "MER",
+ "CurrencyName": "Sun Notes",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "TEST1",
+ "CountryName": "Test No Fractional Digits",
+ "CurrencyCode": "JPY",
+ "CurrencyName": "Test No Fractional Digits",
+ "CurrencySymbol": "¤"
+ },
+ {
+ "CountryCode": "TEST2",
+ "CountryName": "Test Fractional Digits",
+ "CurrencyCode": "JOD",
+ "CurrencyName": "Test Fractional Digits",
+ "CurrencySymbol": "¤"
+ }
+]
\ No newline at end of file
diff --git a/src/CalculatorUITestFramework/MockedCurrencyServer.cs b/src/CalculatorUITestFramework/MockedCurrencyServer.cs
new file mode 100644
index 00000000..c3ad4efc
--- /dev/null
+++ b/src/CalculatorUITestFramework/MockedCurrencyServer.cs
@@ -0,0 +1,81 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Web;
+
+namespace CalculatorUITestFramework
+{
+ public class MockedCurrencyServer : IDisposable
+ {
+ private HttpListener _listener;
+
+ public MockedCurrencyServer()
+ {
+ _listener = new HttpListener
+ {
+ Prefixes =
+ {
+ "http://localhost/calctesting/file/",
+ }
+ };
+ _listener.Start();
+ _listener.BeginGetContext(OnGetContext, _listener);
+ }
+
+ ~MockedCurrencyServer() { DisposeImpl(); }
+
+ public void Dispose()
+ {
+ DisposeImpl();
+ GC.SuppressFinalize(this);
+ }
+
+ private void DisposeImpl()
+ {
+ _listener.Stop();
+ }
+
+ private static void OnGetContext(IAsyncResult result)
+ {
+ var listener = (HttpListener)result.AsyncState;
+ var context = listener.EndGetContext(result);
+ var request = context.Request;
+ var response = context.Response;
+ if (request.HttpMethod == "GET" && TryGetServerFile(request.Url, out var content))
+ {
+ response.Headers.Add("Accept-Ranges", "bytes");
+ response.Headers.Add("Content-Type", "application/json");
+ var data = System.Text.Encoding.UTF8.GetBytes(content);
+ response.StatusCode = 200;
+ response.ContentLength64 = data.Length;
+ response.OutputStream.Write(data, 0, data.Length);
+ response.OutputStream.Close();
+ response.Close();
+ }
+ else
+ {
+ response.StatusCode = 400;
+ response.OutputStream.Close();
+ }
+ listener.BeginGetContext(OnGetContext, listener);
+ }
+
+ private static bool TryGetServerFile(Uri uri, out string content)
+ {
+ var query = HttpUtility.ParseQueryString(uri.Query);
+ var name = query["id"];
+ switch (name)
+ {
+ case "currency converter data":
+ content = File.ReadAllText("MockCurrencyConverterData.json");
+ return true;
+ case "currency static data":
+ content = File.ReadAllText("MockCurrencyStaticData.json");
+ return true;
+ default:
+ content = null;
+ return false;
+ }
+ }
+ }
+}
diff --git a/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs b/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs
index e1d8cc41..c80d723b 100644
--- a/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs
+++ b/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs
@@ -22,6 +22,7 @@ namespace CalculatorUITests
{
// Create session to launch a Calculator window
CalculatorDriver.Instance.SetupCalculatorSession(context);
+ context.Properties.Add("MockedDataServer", new MockedCurrencyServer());
}
///
diff --git a/src/CalculatorUITestsService/CalculatorUITestsService.csproj b/src/CalculatorUITestsService/CalculatorUITestsService.csproj
new file mode 100644
index 00000000..00efc63b
--- /dev/null
+++ b/src/CalculatorUITestsService/CalculatorUITestsService.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/src/CalculatorUITestsService/Program.cs b/src/CalculatorUITestsService/Program.cs
new file mode 100644
index 00000000..f13b673e
--- /dev/null
+++ b/src/CalculatorUITestsService/Program.cs
@@ -0,0 +1,11 @@
+using CalculatorUITestFramework;
+
+using var server = new MockedCurrencyServer();
+var sem = new SemaphoreSlim(0);
+_ = Task.Run(() =>
+{
+ Console.WriteLine("Press any key to exit:");
+ Console.ReadKey();
+ sem.Release();
+});
+sem.Wait();