public void EqualsTest(EdgeAgentDockerModule mod1, EdgeAgentDockerModule mod2, bool areEqual)
        {
            // Act
            bool result = mod1.Equals(mod2);

            // Assert
            Assert.Equal(areEqual, result);
        }
        public void MixedIModuleImplEqualsTest()
        {
            const string CreateOptions = "{\"HostConfig\":{\"PortBindings\":{\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}";
            const string Env           = "{\"var1\":{\"value\":\"val1\"}}";

            var fullModule = new EdgeAgentDockerModule(
                "docker",
                new DockerConfig("Foo", CreateOptions, Option.None <string>()),
                ImagePullPolicy.OnCreate,
                new ConfigurationInfo(),
                JsonConvert.DeserializeObject <IDictionary <string, EnvVal> >(Env),
                "version1");

            var simpleRuntimeModule = CreateEdgeAgentDockerRuntimeModule(new DockerConfig("Foo"));

            var fullRuntimeModule = CreateEdgeAgentDockerRuntimeModule(new DockerConfig(
                                                                           "Foo",
                                                                           "{\"ignore\": \"me\"}",
                                                                           Option.None <string>()));

            var runtimeModuleWithLabels = CreateEdgeAgentDockerRuntimeModule(new DockerConfig(
                                                                                 "Foo",
                                                                                 JsonConvert.SerializeObject(new
            {
                Labels = new Dictionary <string, object>
                {
                    [Constants.Labels.CreateOptions] = CreateOptions,
                    [Constants.Labels.Env]           = Env
                }
            }),
                                                                                 Option.None <string>()));

            var runtimeModuleWithMismatchedCreateOptionsLabel = CreateEdgeAgentDockerRuntimeModule(new DockerConfig(
                                                                                                       "Foo",
                                                                                                       JsonConvert.SerializeObject(new
            {
                Labels = new Dictionary <string, object>
                {
                    [Constants.Labels.CreateOptions] = "{\"a\":\"b\"}",
                    [Constants.Labels.Env]           = Env
                }
            }),
                                                                                                       Option.None <string>()));

            var runtimeModuleWithMismatchedEnvLabel = CreateEdgeAgentDockerRuntimeModule(new DockerConfig(
                                                                                             "Foo",
                                                                                             JsonConvert.SerializeObject(new
            {
                Labels = new Dictionary <string, object>
                {
                    [Constants.Labels.CreateOptions] = CreateOptions,
                    [Constants.Labels.Env]           = "{\"a\":{\"value\":\"b\"}}"
                }
            }),
                                                                                             Option.None <string>()));

            Assert.True(fullModule.Equals(simpleRuntimeModule));
            Assert.True(fullModule.Equals(fullRuntimeModule));
            Assert.True(fullModule.Equals(runtimeModuleWithLabels));

            Assert.False(fullModule.Equals(runtimeModuleWithMismatchedCreateOptionsLabel));
            Assert.False(fullModule.Equals(runtimeModuleWithMismatchedEnvLabel));
        }