1
2
3
4
5
6
7 package main
8
9 import (
10 "testing"
11 )
12
13 func string_ssa(a, b string, x bool) string {
14 s := ""
15 if x {
16 s = a
17 } else {
18 s = b
19 }
20 return s
21 }
22
23 func testString(t *testing.T) {
24 a := "foo"
25 b := "barz"
26 if want, got := a, string_ssa(a, b, true); got != want {
27 t.Errorf("string_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
28 }
29 if want, got := b, string_ssa(a, b, false); got != want {
30 t.Errorf("string_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
31 }
32 }
33
34
35 func complex64_ssa(a, b complex64, x bool) complex64 {
36 var c complex64
37 if x {
38 c = a
39 } else {
40 c = b
41 }
42 return c
43 }
44
45
46 func complex128_ssa(a, b complex128, x bool) complex128 {
47 var c complex128
48 if x {
49 c = a
50 } else {
51 c = b
52 }
53 return c
54 }
55
56 func testComplex64(t *testing.T) {
57 var a complex64 = 1 + 2i
58 var b complex64 = 3 + 4i
59
60 if want, got := a, complex64_ssa(a, b, true); got != want {
61 t.Errorf("complex64_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
62 }
63 if want, got := b, complex64_ssa(a, b, false); got != want {
64 t.Errorf("complex64_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
65 }
66 }
67
68 func testComplex128(t *testing.T) {
69 var a complex128 = 1 + 2i
70 var b complex128 = 3 + 4i
71
72 if want, got := a, complex128_ssa(a, b, true); got != want {
73 t.Errorf("complex128_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
74 }
75 if want, got := b, complex128_ssa(a, b, false); got != want {
76 t.Errorf("complex128_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
77 }
78 }
79
80 func slice_ssa(a, b []byte, x bool) []byte {
81 var s []byte
82 if x {
83 s = a
84 } else {
85 s = b
86 }
87 return s
88 }
89
90 func testSlice(t *testing.T) {
91 a := []byte{3, 4, 5}
92 b := []byte{7, 8, 9}
93 if want, got := byte(3), slice_ssa(a, b, true)[0]; got != want {
94 t.Errorf("slice_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
95 }
96 if want, got := byte(7), slice_ssa(a, b, false)[0]; got != want {
97 t.Errorf("slice_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
98 }
99 }
100
101 func interface_ssa(a, b interface{}, x bool) interface{} {
102 var s interface{}
103 if x {
104 s = a
105 } else {
106 s = b
107 }
108 return s
109 }
110
111 func testInterface(t *testing.T) {
112 a := interface{}(3)
113 b := interface{}(4)
114 if want, got := 3, interface_ssa(a, b, true).(int); got != want {
115 t.Errorf("interface_ssa(%v, %v, true) = %v, want %v\n", a, b, got, want)
116 }
117 if want, got := 4, interface_ssa(a, b, false).(int); got != want {
118 t.Errorf("interface_ssa(%v, %v, false) = %v, want %v\n", a, b, got, want)
119 }
120 }
121
122 func TestCompound(t *testing.T) {
123 testString(t)
124 testSlice(t)
125 testInterface(t)
126 testComplex64(t)
127 testComplex128(t)
128 }
129
View as plain text