You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2017/03/28 13:44:33 UTC

svn commit: r1789139 - in /chemistry/portcmis/trunk: PortCMIS/binding/browser/BrowserBinding.cs PortCMIS/binding/browser/json/Json.cs PortCMIS/client/ClientImpl.cs PortCMISTests/JsonTest.cs PortCMISTests/Properties/AssemblyInfo.cs

Author: fmui
Date: Tue Mar 28 13:44:33 2017
New Revision: 1789139

URL: http://svn.apache.org/viewvc?rev=1789139&view=rev
Log:
PortCMIS: fixed value formatting issues

Modified:
    chemistry/portcmis/trunk/PortCMIS/binding/browser/BrowserBinding.cs
    chemistry/portcmis/trunk/PortCMIS/binding/browser/json/Json.cs
    chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs
    chemistry/portcmis/trunk/PortCMISTests/JsonTest.cs
    chemistry/portcmis/trunk/PortCMISTests/Properties/AssemblyInfo.cs

Modified: chemistry/portcmis/trunk/PortCMIS/binding/browser/BrowserBinding.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/binding/browser/BrowserBinding.cs?rev=1789139&r1=1789138&r2=1789139&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/binding/browser/BrowserBinding.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/binding/browser/BrowserBinding.cs Tue Mar 28 13:44:33 2017
@@ -500,6 +500,10 @@ namespace PortCMIS.Binding.Browser
             {
                 return null;
             }
+            else if (value is string)
+            {
+                return (string)value;
+            }
             else if (value is DateTime)
             {
                 if (DateTimeFormat == DateTimeFormat.Extended)
@@ -513,15 +517,48 @@ namespace PortCMIS.Binding.Browser
             }
             else if (value is decimal)
             {
-                return ((decimal)value).ToString("#", CultureInfo.InvariantCulture);
+                return ((decimal)value).ToString("g", CultureInfo.InvariantCulture);
             }
             else if (value is BigInteger)
             {
                 return ((BigInteger)value).ToString("0", CultureInfo.InvariantCulture);
             }
+            else if (value is Boolean)
+            {
+                return (Boolean)value ? "true" : "false";
+            }
+            else if (value is Double)
+            {
+                if (Double.IsInfinity((Double)value) || Double.IsNaN((Double)value))
+                {
+                    return "null";
+                }
+                else
+                {
+                    return ((Double)value).ToString("g", CultureInfo.InvariantCulture);
+                }
+            }
+            else if (value is Single)
+            {
+                if (Single.IsInfinity((Single)value) || Single.IsNaN((Single)value))
+                {
+                    return "null";
+                }
+                else
+                {
+                    return ((Single)value).ToString("g", CultureInfo.InvariantCulture);
+                }
+            }
             else
             {
-                return value.ToString();
+                try
+                {
+                    return Convert.ToInt64(value).ToString("0", CultureInfo.InvariantCulture);
+                }
+                catch (Exception)
+                {
+                    return value.ToString();
+                }
             }
         }
     }

Modified: chemistry/portcmis/trunk/PortCMIS/binding/browser/json/Json.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/binding/browser/json/Json.cs?rev=1789139&r1=1789138&r2=1789139&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/binding/browser/json/Json.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/binding/browser/json/Json.cs Tue Mar 28 13:44:33 2017
@@ -64,6 +64,24 @@ namespace PortCMIS.Binding.Browser.Json
                 return;
             }
 
+            if (value is decimal)
+            {
+                writer.Write(((decimal)value).ToString("g", CultureInfo.InvariantCulture));
+                return;
+            }
+
+            if (value is BigInteger)
+            {
+                writer.Write(((BigInteger)value).ToString("0", CultureInfo.InvariantCulture));
+                return;
+            }
+
+            if (value is Boolean)
+            {
+                writer.Write((Boolean)value ? "true" : "false");
+                return;
+            }
+
             if (value is Double)
             {
                 if (Double.IsInfinity((Double)value) || Double.IsNaN((Double)value))
@@ -72,7 +90,7 @@ namespace PortCMIS.Binding.Browser.Json
                 }
                 else
                 {
-                    writer.Write(((Double)value).ToString("#", CultureInfo.InvariantCulture));
+                    writer.Write(((Double)value).ToString("g", CultureInfo.InvariantCulture));
                 }
                 return;
             }
@@ -85,29 +103,11 @@ namespace PortCMIS.Binding.Browser.Json
                 }
                 else
                 {
-                    writer.Write(((Single)value).ToString("0", CultureInfo.InvariantCulture));
+                    writer.Write(((Single)value).ToString("g", CultureInfo.InvariantCulture));
                 }
                 return;
             }
 
-            if (value is decimal)
-            {
-                writer.Write(((decimal)value).ToString("#", CultureInfo.InvariantCulture));
-                return;
-            }
-
-            if (value is BigInteger)
-            {
-                writer.Write(((BigInteger)value).ToString("0", CultureInfo.InvariantCulture));
-                return;
-            }
-
-            if (value is Boolean)
-            {
-                writer.Write(value.ToString());
-                return;
-            }
-
             if (value is IJsonStreamAware)
             {
                 ((IJsonStreamAware)value).WriteJsonString(writer);
@@ -858,7 +858,7 @@ namespace PortCMIS.Binding.Browser.Json
         private const int ZzPushbackTooBig = 2;
 
         // error messages for the codes above
-        private static readonly string[] ZZ_ERROR_MSG = { 
+        private static readonly string[] ZZ_ERROR_MSG = {
                                               "Unknown internal scanner error",
                                               "Error: could not match input",
                                               "Error: pushback value was too large"

Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs?rev=1789139&r1=1789138&r2=1789139&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs Tue Mar 28 13:44:33 2017
@@ -1652,7 +1652,7 @@ namespace PortCMIS.Client.Impl
             StringListBuilder slb = new StringListBuilder(",");
             foreach (decimal n in num)
             {
-                slb.Add(n.ToString("#", CultureInfo.InvariantCulture));
+                slb.Add(n.ToString("g", CultureInfo.InvariantCulture));
             }
 
             parametersDict[parameterIndex] = slb.ToString();

Modified: chemistry/portcmis/trunk/PortCMISTests/JsonTest.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMISTests/JsonTest.cs?rev=1789139&r1=1789138&r2=1789139&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMISTests/JsonTest.cs (original)
+++ chemistry/portcmis/trunk/PortCMISTests/JsonTest.cs Tue Mar 28 13:44:33 2017
@@ -28,14 +28,28 @@ namespace PortCMISTests
     [TestClass]
     public class JsonTest
     {
+        private TestContext testContextInstance;
+
+        public TestContext TestContext
+        {
+            get
+            {
+                return testContextInstance;
+            }
+            set
+            {
+                testContextInstance = value;
+            }
+        }
+
         [TestMethod]
         public void TestBasicJson()
         {
             JsonParser jp = new JsonParser();
-            
+
             // ---
             string json1 = "{ \"test\":\"test-value\" }";
-            JsonObject jo1 = (JsonObject) jp.Parse(new StringReader(json1));
+            JsonObject jo1 = (JsonObject)jp.Parse(new StringReader(json1));
 
             Assert.AreEqual("test-value", jo1["test"]);
 
@@ -44,17 +58,52 @@ namespace PortCMISTests
             Assert.AreEqual("{\"test\":\"test-value\"}", writer.ToString());
 
             // ---
-            string json2 = "{ \"s\":\"test\", \"i\":42, \"b\":true, \"d\":123.456, \"n\":null}";
+            string json2 = "{ \"s\":\"test\", \"i\":42, \"i0\":0, \"b\":true, \"d\":123.456, \"d0\": 0.0, \"n\":null}";
             JsonObject jo2 = (JsonObject)jp.Parse(new StringReader(json2));
 
             Assert.AreEqual("test", jo2["s"]);
             Assert.AreEqual(new BigInteger(42), jo2["i"]);
+            Assert.AreEqual(BigInteger.Zero, jo2["i0"]);
             Assert.AreEqual(true, jo2["b"]);
             Assert.AreEqual(new Decimal(123.456), jo2["d"]);
+            Assert.AreEqual(new Decimal(0), jo2["d0"]);
             Assert.IsNull(jo2["n"]);
         }
 
         [TestMethod]
+        public void TestCreateJson()
+        {
+            JsonObject jo1 = new JsonObject();
+            jo1.Add("s", "test");
+            jo1.Add("i", 42);
+            jo1.Add("i0", 0);
+            jo1.Add("i1", new BigInteger(21));
+            jo1.Add("b-true", true);
+            jo1.Add("b-false", false);
+            jo1.Add("d", new decimal(123.456));
+            jo1.Add("d0", new decimal(0.0));
+            jo1.Add("f", 98.76);
+            jo1.Add("n", null);
+
+            string jsonStr = jo1.ToString();
+            TestContext.WriteLine("{0}", jsonStr);
+
+            JsonParser jp = new JsonParser();
+            JsonObject jo2 = (JsonObject)jp.Parse(new StringReader(jsonStr));
+
+            Assert.AreEqual(jo1["s"], jo2["s"]);
+            Assert.AreEqual(new BigInteger((int)jo1["i"]), jo2["i"]);
+            Assert.AreEqual(new BigInteger((int)jo1["i0"]), jo2["i0"]);
+            Assert.AreEqual(jo1["i1"], jo2["i1"]);
+            Assert.AreEqual(jo1["b-true"], jo2["b-true"]);
+            Assert.AreEqual(jo1["b-false"], jo2["b-false"]);
+            Assert.AreEqual(jo1["d"], jo2["d"]);
+            Assert.AreEqual(jo1["d0"], new decimal((int)((BigInteger)jo2["d0"])));
+            Assert.AreEqual(new decimal((double)jo1["f"]), jo2["f"]);
+            Assert.AreEqual(jo1["n"], jo2["n"]);
+        }
+
+        [TestMethod]
         public void TestArray()
         {
             JsonParser jp = new JsonParser();

Modified: chemistry/portcmis/trunk/PortCMISTests/Properties/AssemblyInfo.cs
URL: http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMISTests/Properties/AssemblyInfo.cs?rev=1789139&r1=1789138&r2=1789139&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMISTests/Properties/AssemblyInfo.cs (original)
+++ chemistry/portcmis/trunk/PortCMISTests/Properties/AssemblyInfo.cs Tue Mar 28 13:44:33 2017
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.2.0.0")]
-[assembly: AssemblyFileVersion("0.2.0.0")]
+[assembly: AssemblyVersion("0.3.0.0")]
+[assembly: AssemblyFileVersion("0.3.0.0")]