Skip to content
This repository was archived by the owner on Feb 28, 2025. It is now read-only.

Commit 497d137

Browse files
jakobhtmrombout
authored andcommitted
Wrote tests for the utils.go file (cadence-workflow#1385)
What changed? Wrote tests for the utils.go file Why? Improve code coverage How did you test it? Potential risks
1 parent d26b5c7 commit 497d137

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

internal/common/util/util_test.go

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Copyright (c) 2017-2021 Uber Technologies Inc.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a copy
4+
// of this software and associated documentation files (the "Software"), to deal
5+
// in the Software without restriction, including without limitation the rights
6+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
// copies of the Software, and to permit persons to whom the Software is
8+
// furnished to do so, subject to the following conditions:
9+
//
10+
// The above copyright notice and this permission notice shall be included in
11+
// all copies or substantial portions of the Software.
12+
//
13+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
// THE SOFTWARE.
20+
21+
package util
22+
23+
import (
24+
"reflect"
25+
"sync"
26+
"testing"
27+
"time"
28+
29+
"github.com/stretchr/testify/assert"
30+
)
31+
32+
func Test_MergeDicts(t *testing.T) {
33+
cases := []struct {
34+
dic1 map[string]string
35+
dic2 map[string]string
36+
expected map[string]string
37+
}{
38+
{map[string]string{"a": "1", "b": "2"}, map[string]string{"b": "3", "c": "4"}, map[string]string{"a": "1", "b": "3", "c": "4"}},
39+
{map[string]string{"a": "1"}, map[string]string{"a": "2"}, map[string]string{"a": "2"}},
40+
{map[string]string{}, map[string]string{"a": "1"}, map[string]string{"a": "1"}},
41+
{map[string]string{"a": "1"}, map[string]string{}, map[string]string{"a": "1"}},
42+
{map[string]string{}, map[string]string{}, map[string]string{}},
43+
}
44+
45+
for _, c := range cases {
46+
result := MergeDicts(c.dic1, c.dic2)
47+
assert.Equal(t, c.expected, result)
48+
}
49+
}
50+
51+
func Test_AwaitWaitGroup(t *testing.T) {
52+
cases := []struct {
53+
timeout time.Duration
54+
expected bool
55+
}{
56+
{10 * time.Millisecond, false},
57+
{500 * time.Millisecond, true},
58+
}
59+
60+
for _, c := range cases {
61+
var wg sync.WaitGroup
62+
wg.Add(1)
63+
64+
go func() {
65+
time.Sleep(100 * time.Millisecond)
66+
wg.Done()
67+
}()
68+
69+
assert.Equal(t, c.expected, AwaitWaitGroup(&wg, c.timeout))
70+
}
71+
}
72+
73+
func Test_IsTypeByteSlice(t *testing.T) {
74+
assert.True(t, IsTypeByteSlice(reflect.TypeOf([]byte(nil))))
75+
assert.True(t, IsTypeByteSlice(reflect.PtrTo(reflect.TypeOf([]byte(nil)))))
76+
assert.False(t, IsTypeByteSlice(reflect.TypeOf([]int(nil))))
77+
}

0 commit comments

Comments
 (0)