From e9f3ad350de1fb15d8c12e11afd700fd1b711fe0 Mon Sep 17 00:00:00 2001 From: Dustin Sier Date: Fri, 24 Sep 2021 10:53:04 -0400 Subject: [PATCH 001/130] Updated with new asserts. Created function to make map. --- OptimizelySDK.Tests/Assertions.cs | 122 +++++++++++++ .../OptimizelySDK.Tests.csproj | 5 +- OptimizelySDK.Tests/ProjectConfigTest.cs | 163 +++++++++++++++--- OptimizelySDK/Config/DatafileProjectConfig.cs | 38 ++++ OptimizelySDK/ProjectConfig.cs | 6 + 5 files changed, 306 insertions(+), 28 deletions(-) create mode 100644 OptimizelySDK.Tests/Assertions.cs diff --git a/OptimizelySDK.Tests/Assertions.cs b/OptimizelySDK.Tests/Assertions.cs new file mode 100644 index 00000000..84189c38 --- /dev/null +++ b/OptimizelySDK.Tests/Assertions.cs @@ -0,0 +1,122 @@ +using NUnit.Framework; +using OptimizelySDK.Entity; +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OptimizelySDK.Tests +{ + /// + /// Simplifies assertions and provides more insight into which particular piece is failing for a value. + /// Especially helpful for Test Driven Development + /// + [ExcludeFromCodeCoverage] + public class Assertions + { + #region Variations + public static void AreEqual(Variation expected, Variation actual) + { + Assert.AreEqual(expected.Id, actual.Id); + Assert.AreEqual(expected.Key, actual.Key); + Assert.AreEqual(expected.FeatureEnabled, actual.FeatureEnabled); + + AreEquivalent(expected.FeatureVariableUsageInstances, actual.FeatureVariableUsageInstances); + AreEquivalent(expected.VariableIdToVariableUsageInstanceMap, actual.VariableIdToVariableUsageInstanceMap); + } + + public static void AreEquivalent(IEnumerable>> expected, IEnumerable>> actual) + { + Assert.AreEqual(expected.Count(), actual.Count()); + + var zipped = expected.Zip(actual, (e, a) => + { + return new + { + Expected = e, + Actual = a + }; + }).ToList(); + + foreach(var z in zipped) + { + AreEquivalent(z.Expected, z.Actual); + } + } + + public static void AreEquivalent(KeyValuePair> expected, KeyValuePair> actual) + { + Assert.AreEqual(expected.Key, actual.Key); + AreEquivalent(expected.Value, actual.Value); + } + + + + public static void AreEquivalent(IEnumerable expected, IEnumerable actual) + { + Assert.AreEqual(expected.Count(), actual.Count()); + expected.Zip(actual, (e, a) => + { + return new + { + Expected = e, + Actual = a + }; + }).ToList().ForEach((item) => + { + AreEqual(item.Expected, item.Actual); + }); + } + + #endregion + + #region FeatureVariableUsage + public static void AreEquivalent(IEnumerable expected, IEnumerable actual) + { + Assert.AreEqual(expected.Count(), actual.Count()); + expected.Zip(actual, (e, a) => + { + return new + { + Expected = e, + Actual = a + }; + }).ToList().ForEach((item) => + { + AreEqual(item.Expected, item.Actual); + }); + } + + public static void AreEquivalent(Dictionary expected, Dictionary actual) + { + expected.Zip(actual, (e, a) => + { + return new + { + Expected = e, + Actual = a + }; + }).ToList().ForEach((item) => + { + AreEquivalent(item.Expected, item.Actual); + }); + } + + public static void AreEquivalent(KeyValuePair expected, KeyValuePair actual) + { + Assert.AreEqual(expected.Key, actual.Key); + AreEqual(expected.Value, actual.Value); + } + + public static void AreEqual(FeatureVariableUsage expected, FeatureVariableUsage actual) + { + Assert.AreEqual(expected.Id, actual.Id); + Assert.AreEqual(expected.Value, actual.Value); + } + #endregion + + + } +} diff --git a/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj b/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj index d5231738..26b18922 100644 --- a/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj +++ b/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj @@ -70,6 +70,7 @@ + @@ -143,9 +144,7 @@ - - - +