public void TestToObject()

in DarabonbaUnitTests/ModelTest.cs [78:193]


        public void TestToObject()
        {
            Dictionary<string, object> dic = new Dictionary<string, object>();
            List<Dictionary<string, object>> dicItems = new List<Dictionary<string, object>>();
            List<string> testListStr = new List<string> { "str","testStr"};
            dic.Add("requestId", "requestID");
            dic.Add("next_marker", "next");
            dic.Add("testNoAttr", "noAttr");

            Dictionary<string, object> dicSub = new Dictionary<string, object>();
            dicSub.Add("requestId", "sub");
            dicSub.Add("testInt", 100);
            Dictionary<string, object> dicSubNull = null;
            Dictionary<string, object> dicSubRe = new Dictionary<string, object>();
            dicSubRe.Add("requestId", "subRe");
            dicSubRe.Add("testInt", 500);
            dicItems.Add(dicSub);
            dicItems.Add(dicSubRe);
            dicItems.Add(dicSubNull);
            dic.Add("items", dicItems);

            dic.Add("testListStr", testListStr);

            Dictionary<string, object> dicSubModel = new Dictionary<string, object>();
            dicSubModel.Add("requestId", "subModel");
            dic.Add("subModel", dicSubModel);

            Dictionary<string, object> dicDict = new Dictionary<string, object>();
            dicDict.Add("test", 1);
            dicDict.Add("testListStr", testListStr);
            dicDict.Add("testDict", dicSubModel);
            dic.Add("dict", dicDict);

            dic.Add("testInt32", "-32");
            dic.Add("testLong", -64L);
            dic.Add("testFloat", 11.11);
            dic.Add("testDouble", 12.12);
            dic.Add("testBool", "false");
            dic.Add("testShort", -16);
            dic.Add("testUShort", 16);
            dic.Add("testUInt", 32);
            dic.Add("testULong", 64);
            dic.Add("testNull", null);
            Dictionary<string, object> nullValueDic = new Dictionary<string, object>();
            nullValueDic.Add("testNullValueDic", new Dictionary<string, object>());
            dic.Add("Content", nullValueDic);

            TestRegModel model = Model.ToObject<TestRegModel>(dic);
            var testNullValueDic = model.Content["testNullValueDic"] as Dictionary<string, object>;
            Assert.True(testNullValueDic.Count==0);
            Assert.NotNull(model);
            Assert.Equal("requestID", model.RequestId);
            Assert.Equal("next", model.NextMarker);
            Assert.Equal("noAttr", model.testNoAttr);
            Assert.Equal("sub", model.Items[0].RequestId);
            Assert.Equal(testListStr, model.dict["testListStr"]);
            Assert.Equal(dicSubModel, model.dict["testDict"]);
            Assert.Equal(100, model.Items[0].testInt);
            Assert.NotNull(model.Items[1]);
            Assert.NotEqual(model.Items[0].RequestId, model.Items[1].RequestId);
            Assert.Null(model.Items[2]);
            Assert.Equal("str", model.testListStr[0]);
            Assert.NotNull(model.subModel);
            Assert.NotNull(model.dict);
            Assert.Null(model.testNull);

            Dictionary<string, string> dicString = null;
            Assert.Null(Model.ToObject<TestDicStringModel>(dicString));
            dicString = new Dictionary<string, string>();
            dicString.Add("requestId", "test");
            dicString.Add("count", "1");
            TestDicStringModel stringModel = Model.ToObject<TestDicStringModel>(dicString);
            Assert.NotNull(stringModel);
            Assert.Equal("test", stringModel.RequestId);

            Dictionary<string, object> dicConvert = new Dictionary<string, object>();
            dicConvert.Add("requestId", dicSub);
            dicConvert.Add("count", "1");

            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.NotNull(stringModel);
            Assert.Equal("{\"requestId\":\"sub\",\"testInt\":100}", stringModel.RequestId);
            Assert.Equal(1, stringModel.Count);

            dicConvert.Remove("requestId");
            dicConvert.Add("requestId", dicItems);
            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.Equal("[{\"requestId\":\"sub\",\"testInt\":100},{\"requestId\":\"subRe\",\"testInt\":500},null]", stringModel.RequestId);

            dicConvert.Remove("requestId");
            string[] array = new string[] { "a", "b" };
            dicConvert.Add("requestId", array);
            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.Equal("[\"a\",\"b\"]", stringModel.RequestId);

            dicConvert.Remove("requestId");
            dicConvert.Add("requestId", 1.1);
            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.Equal("1.1", stringModel.RequestId);

            dicConvert.Remove("requestId");
            dicConvert.Add("requestId", 11111111111111111111L);
            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.Equal("11111111111111111111", stringModel.RequestId);

            dicConvert.Remove("requestId");
            dicConvert.Add("requestId", null);
            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.Null(stringModel.RequestId);

            dicConvert.Remove("requestId");
            dicConvert.Add("requestId", true);
            stringModel = Model.ToObject<TestDicStringModel>(dicConvert);
            Assert.Equal("True", stringModel.RequestId);

        }