This is an automated email from the ASF dual-hosted git repository.

rob pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git

commit 64f26d52524d844530e0ef96cbb6a0361bd87b90
Author: Dan Kirkwood <dang...@apache.org>
AuthorDate: Fri Feb 2 10:42:38 2018 -0700

    add json marshalling and tests for deepcachingtype
---
 lib/go-tc/enum.go      |  6 ++++
 lib/go-tc/enum_test.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+)

diff --git a/lib/go-tc/enum.go b/lib/go-tc/enum.go
index 04d2363..da9dcf1 100644
--- a/lib/go-tc/enum.go
+++ b/lib/go-tc/enum.go
@@ -29,6 +29,7 @@ package tc
  */
 
 import (
+       "encoding/json"
        "errors"
        "strconv"
        "strings"
@@ -233,3 +234,8 @@ func (t *DeepCachingType) UnmarshalJSON(data []byte) error {
        }
        return nil
 }
+
+// MarshalJSON marshals into a JSON representation
+func (t DeepCachingType) MarshalJSON() ([]byte, error) {
+       return json.Marshal(t.String())
+}
diff --git a/lib/go-tc/enum_test.go b/lib/go-tc/enum_test.go
new file mode 100644
index 0000000..e11e35b
--- /dev/null
+++ b/lib/go-tc/enum_test.go
@@ -0,0 +1,75 @@
+package tc
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import (
+       "encoding/json"
+       "testing"
+)
+
+func TestDeepCachingType(t *testing.T) {
+       var d DeepCachingType
+       c := d.String()
+       if c != "NEVER" {
+               t.Errorf(`Default "%s" expected to be "NEVER"`, c)
+       }
+
+       tests := map[string]string{
+               "":            "NEVER",
+               "NEVER":       "NEVER",
+               "ALWAYS":      "ALWAYS",
+               "never":       "NEVER",
+               "always":      "ALWAYS",
+               "Never":       "NEVER",
+               "AlwayS":      "ALWAYS",
+               " ":           "INVALID",
+               "NEVERALWAYS": "INVALID",
+               "ALWAYSNEVER": "INVALID",
+       }
+
+       for in, exp := range tests {
+               dc := DeepCachingTypeFromString(in)
+               got, err := json.Marshal(dc)
+               if err != nil {
+                       t.Errorf("%v", err)
+               }
+
+               if string(got) != `"`+exp+`"` {
+                       t.Errorf("for %s,  expected %s,  got %s", in, exp, got)
+               }
+               var new DeepCachingType
+               json.Unmarshal(got, &new)
+               if new != dc {
+                       t.Errorf("Expected %v,  got %v", dc, new)
+               }
+       }
+
+       // make sure we get the right default when marshalled within a new 
delivery service
+       var ds DeliveryService
+       txt, err := json.MarshalIndent(ds, ``, `  `)
+       if err != nil {
+               t.Errorf(err.Error())
+       }
+       t.Log(string(txt))
+       c = ds.DeepCachingType.String()
+       if c != "NEVER" {
+               t.Errorf(`Default "%s" expected to be "NEVER"`, c)
+       }
+}

-- 
To stop receiving notification emails like this one, please contact
r...@apache.org.

Reply via email to