go.temporal.io/server@v1.23.0/common/codec/gob/gob_test.go (about) 1 // The MIT License 2 // 3 // Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. 4 // 5 // Copyright (c) 2020 Uber Technologies, Inc. 6 // 7 // Permission is hereby granted, free of charge, to any person obtaining a copy 8 // of this software and associated documentation files (the "Software"), to deal 9 // in the Software without restriction, including without limitation the rights 10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 // copies of the Software, and to permit persons to whom the Software is 12 // furnished to do so, subject to the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be included in 15 // all copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 // THE SOFTWARE. 24 25 package gob 26 27 import ( 28 "testing" 29 "time" 30 31 "github.com/pborman/uuid" 32 "github.com/stretchr/testify/require" 33 ) 34 35 type testStruct struct { 36 Namespace string 37 WorkflowID string 38 RunID string 39 StartTime time.Time 40 } 41 42 func TestGobEncoder(t *testing.T) { 43 encoder := NewGobEncoder() 44 45 namespace := "test-namespace" 46 wid := uuid.New() 47 rid := uuid.New() 48 startTime := time.Now().UTC() 49 50 // test encode and decode 1 object 51 msg := &testStruct{ 52 Namespace: namespace, 53 WorkflowID: wid, 54 RunID: rid, 55 StartTime: startTime, 56 } 57 payload, err := encoder.Encode(msg) 58 require.NoError(t, err) 59 var decoded *testStruct 60 err = encoder.Decode(payload, &decoded) 61 require.NoError(t, err) 62 require.Equal(t, msg, decoded) 63 64 // test encode and decode 2 objects 65 msg2 := "test-string" 66 payload, err = encoder.Encode(msg2, msg) 67 require.NoError(t, err) 68 var decoded2 string 69 err = encoder.Decode(payload, &decoded2, &decoded) 70 require.NoError(t, err) 71 require.Equal(t, msg, decoded) 72 require.Equal(t, msg2, decoded2) 73 74 // test encode and decode 0 object 75 _, err = encoder.Encode() 76 require.Error(t, err) 77 err = encoder.Decode(payload) 78 require.Error(t, err) 79 }