Esempio n. 1
0
        // Tests if condition key map merges existing values
        public void TestConditionMapPutAll()
        {
            ConditionMap cmap1 = new ConditionMap();

            cmap1.Add("StringEquals", new ConditionKeyMap("s3:prefix", new HashSet <string>()
            {
                "hello"
            }));

            ConditionMap cmap2 = new ConditionMap();

            cmap2.Add("StringEquals", new ConditionKeyMap("s3:prefix", new HashSet <string>()
            {
                "world"
            }));

            ConditionMap cmap3 = new ConditionMap();

            cmap3.Add("StringEquals", new ConditionKeyMap("s3:myprefix", new HashSet <string>()
            {
                "world"
            }));

            ConditionMap cmap4 = new ConditionMap();

            cmap4.Add("StringEquals", new ConditionKeyMap("s3:prefix", new HashSet <string>()
            {
                "hello"
            }));
            var testCases = new List <KeyValuePair <Tuple <ConditionMap, ConditionMap>, string> >()
            {
                // Both args are empty
                new KeyValuePair <Tuple <ConditionMap, ConditionMap>, string>(Tuple.Create(new ConditionMap(), new ConditionMap()), @"{}"),
                // First arg empty
                new KeyValuePair <Tuple <ConditionMap, ConditionMap>, string>(Tuple.Create(new ConditionMap(), cmap1), @"{""StringEquals"":{""s3:prefix"":[""hello""]}}"),
                //Second arg empty
                new KeyValuePair <Tuple <ConditionMap, ConditionMap>, string>(Tuple.Create(cmap1, new ConditionMap()), @"{""StringEquals"":{""s3:prefix"":[""hello""]}}"),
                //Both args have same value
                new KeyValuePair <Tuple <ConditionMap, ConditionMap>, string>(Tuple.Create(cmap1, cmap4), @"{""StringEquals"":{""s3:prefix"":[""hello""]}}"),
                //Value of second arg will be merged
                new KeyValuePair <Tuple <ConditionMap, ConditionMap>, string>(Tuple.Create(cmap1, cmap2), @"{""StringEquals"":{""s3:prefix"":[""hello"",""world""]}}"),
                //second arg will be added
                new KeyValuePair <Tuple <ConditionMap, ConditionMap>, string>(Tuple.Create(cmap1, cmap3), @"{""StringEquals"":{""s3:prefix"":[""hello"",""world""],""s3:myprefix"":[""world""]}}"),
            };

            int index = 0;

            foreach (KeyValuePair <Tuple <ConditionMap, ConditionMap>, string> pair in testCases)
            {
                try
                {
                    index += 1;
                    var          testcase = pair.Key;
                    ConditionMap first    = testcase.Item1;
                    ConditionMap second   = testcase.Item2;
                    string       expectedConditionKMapJSON = pair.Value;
                    first.PutAll(second);
                    string cmpstring = JsonConvert.SerializeObject(first, Formatting.None,
                                                                   new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore
                    });

                    Assert.AreEqual(cmpstring, expectedConditionKMapJSON);
                }
                catch (ArgumentException)
                {
                    Assert.Fail();
                }
            }
        }