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.