コード例 #1
0
        public void ConvertCsv_MissMatchColumnsCount_ThrowsException()
        {
            var csv = "int,float,double\r\n" +
                      "1,1.1";

            Assert.Throws <IndexOutOfRangeException>(() => CsvParser.ConvertCsv(csv));
        }
        private static async void ImportSheetAsync(ImportData data, string spreadsheetId)
        {
            var indexStart = data.Importer.GoogleSheetUrl.IndexOf("/d/", StringComparison.Ordinal) + 3;
            var indexCount = data.Importer.GoogleSheetUrl.IndexOf("/edit#", StringComparison.Ordinal) - indexStart;
            var url        = data.Importer.GoogleSheetUrl.Replace("edit#", "export?format=csv&");
            var finalUrl   = string.IsNullOrWhiteSpace(spreadsheetId) ? url : url.Remove(indexStart, indexCount).Insert(indexStart, spreadsheetId);
            var request    = UnityWebRequest.Get(finalUrl);

            await AsyncOperation(request.SendWebRequest());

            if (request.isHttpError || request.isNetworkError)
            {
                throw new Exception(request.error);
            }

            var values = CsvParser.ConvertCsv(request.downloadHandler.text);

            if (values.Count == 0)
            {
                Debug.LogWarning($"The return sheet was not in CSV format:\n{request.downloadHandler.text}");
            }
            else
            {
                data.Importer.Import(values);
            }

            Debug.Log($"Finished importing google sheet data from {data.Type.Name}");
        }
コード例 #3
0
        public void ConvertCsv_OnlyHeadlines_EmptyResult()
        {
            var csv = "int,float,double,enum,pair";

            var dic = CsvParser.ConvertCsv(csv);

            Assert.AreEqual(0, dic.Count);
        }
コード例 #4
0
        public void ConvertCsv_WrongFormatSeparator_EmptyResult()
        {
            var csv = "int,float\n" +
                      "1,1.1";

            var dic = CsvParser.ConvertCsv(csv);

            Assert.AreEqual(0, dic.Count);
        }
コード例 #5
0
        public void Deserialize_ExtraFields_Successfully()
        {
            var csv = "Int,Float,ExtraField\r\n" +
                      "1,1.1,extraValue";
            var dic    = CsvParser.ConvertCsv(csv);
            var result = CsvParser.DeserializeTo <MockClass>(dic[0]);

            Assert.AreEqual(null, result.String);
            Assert.AreEqual(1, result.Int);
            Assert.AreEqual(1.1f, result.Float);
            Assert.AreEqual(0, result.Double);
            Assert.AreEqual(MockEnum.MockValue, result.Enum);
            Assert.AreEqual(null, result.Array);
            Assert.AreEqual(null, result.List);
            Assert.AreEqual(new KeyValuePair <int, int>(), result.Pair);
            Assert.AreEqual(null, result.Dictionary);
        }
コード例 #6
0
        public void ConvertCsv_Successfully()
        {
            var csv = "Ignored,String,Int,Float,Double,Enum,Array,List,Pair,Dictionary\r\n" +
                      "Ignored,text,1,1.1,1.1,MockValue,\"1,2\",\"1,2\",\"1:2\",\"1,2\"";
            var dic = CsvParser.ConvertCsv(csv);

            Assert.AreEqual(1, dic.Count);
            Assert.AreEqual(10, dic[0].Count);
            Assert.AreEqual("Ignored", dic[0]["Ignored"]);
            Assert.AreEqual("text", dic[0]["String"]);
            Assert.AreEqual("1", dic[0]["Int"]);
            Assert.AreEqual("1.1", dic[0]["Float"]);
            Assert.AreEqual("1.1", dic[0]["Double"]);
            Assert.AreEqual("MockValue", dic[0]["Enum"]);
            Assert.AreEqual("1,2", dic[0]["Array"]);
            Assert.AreEqual("1,2", dic[0]["List"]);
            Assert.AreEqual("1:2", dic[0]["Pair"]);
            Assert.AreEqual("1,2", dic[0]["Dictionary"]);
        }
コード例 #7
0
        public void Deserialize_Successfully()
        {
            var csv = "Ignored,String,Int,Float,Double,Enum,Array,List,Pair,Dictionary\r\n" +
                      "Ignored,text,1,1.1,1.1,MockValue,\"1,2\",\"1,2\",\"1:2\",\"1,2\"";
            var dic    = CsvParser.ConvertCsv(csv);
            var result = CsvParser.DeserializeTo <MockClass>(dic[0]);

            Assert.AreEqual(null, result.Ignored);
            Assert.AreEqual("text", result.String);
            Assert.AreEqual(1, result.Int);
            Assert.AreEqual(1.1f, result.Float);
            Assert.AreEqual(1.1d, result.Double);
            Assert.AreEqual(MockEnum.MockValue, result.Enum);
            Assert.AreEqual(new[] { 1, 2 }, result.Array);
            Assert.AreEqual(new List <int> {
                1, 2
            }, result.List);
            Assert.AreEqual(new KeyValuePair <int, int>(1, 2), result.Pair);
            Assert.AreEqual(new Dictionary <int, int> {
                { 1, 2 }
            }, result.Dictionary);
        }