Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 1 | // Copyright 2009 The Go Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
| 5 | package quick |
| 6 | |
| 7 | import ( |
Rob Pike | 45e3bcb | 2011-11-08 15:41:54 -0800 | [diff] [blame] | 8 | "math/rand" |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 9 | "reflect" |
| 10 | "testing" |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 11 | ) |
| 12 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 13 | func fBool(a bool) bool { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 14 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 15 | type TestBoolAlias bool |
| 16 | |
| 17 | func fBoolAlias(a TestBoolAlias) TestBoolAlias { return a } |
| 18 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 19 | func fFloat32(a float32) float32 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 20 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 21 | type TestFloat32Alias float32 |
| 22 | |
| 23 | func fFloat32Alias(a TestFloat32Alias) TestFloat32Alias { return a } |
| 24 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 25 | func fFloat64(a float64) float64 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 26 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 27 | type TestFloat64Alias float64 |
| 28 | |
| 29 | func fFloat64Alias(a TestFloat64Alias) TestFloat64Alias { return a } |
| 30 | |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 31 | func fComplex64(a complex64) complex64 { return a } |
| 32 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 33 | type TestComplex64Alias complex64 |
| 34 | |
| 35 | func fComplex64Alias(a TestComplex64Alias) TestComplex64Alias { return a } |
| 36 | |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 37 | func fComplex128(a complex128) complex128 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 38 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 39 | type TestComplex128Alias complex128 |
| 40 | |
| 41 | func fComplex128Alias(a TestComplex128Alias) TestComplex128Alias { return a } |
| 42 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 43 | func fInt16(a int16) int16 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 44 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 45 | type TestInt16Alias int16 |
| 46 | |
| 47 | func fInt16Alias(a TestInt16Alias) TestInt16Alias { return a } |
| 48 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 49 | func fInt32(a int32) int32 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 50 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 51 | type TestInt32Alias int32 |
| 52 | |
| 53 | func fInt32Alias(a TestInt32Alias) TestInt32Alias { return a } |
| 54 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 55 | func fInt64(a int64) int64 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 56 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 57 | type TestInt64Alias int64 |
| 58 | |
| 59 | func fInt64Alias(a TestInt64Alias) TestInt64Alias { return a } |
| 60 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 61 | func fInt8(a int8) int8 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 62 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 63 | type TestInt8Alias int8 |
| 64 | |
| 65 | func fInt8Alias(a TestInt8Alias) TestInt8Alias { return a } |
| 66 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 67 | func fInt(a int) int { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 68 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 69 | type TestIntAlias int |
| 70 | |
| 71 | func fIntAlias(a TestIntAlias) TestIntAlias { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 72 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 73 | func fMap(a map[int]int) map[int]int { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 74 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 75 | type TestMapAlias map[int]int |
| 76 | |
| 77 | func fMapAlias(a TestMapAlias) TestMapAlias { return a } |
| 78 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 79 | func fSlice(a []byte) []byte { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 80 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 81 | type TestSliceAlias []byte |
| 82 | |
| 83 | func fSliceAlias(a TestSliceAlias) TestSliceAlias { return a } |
| 84 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 85 | func fString(a string) string { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 86 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 87 | type TestStringAlias string |
| 88 | |
| 89 | func fStringAlias(a TestStringAlias) TestStringAlias { return a } |
| 90 | |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 91 | type TestStruct struct { |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 92 | A int |
| 93 | B string |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 94 | } |
| 95 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 96 | func fStruct(a TestStruct) TestStruct { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 97 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 98 | type TestStructAlias TestStruct |
| 99 | |
| 100 | func fStructAlias(a TestStructAlias) TestStructAlias { return a } |
| 101 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 102 | func fUint16(a uint16) uint16 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 103 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 104 | type TestUint16Alias uint16 |
| 105 | |
| 106 | func fUint16Alias(a TestUint16Alias) TestUint16Alias { return a } |
| 107 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 108 | func fUint32(a uint32) uint32 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 109 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 110 | type TestUint32Alias uint32 |
| 111 | |
| 112 | func fUint32Alias(a TestUint32Alias) TestUint32Alias { return a } |
| 113 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 114 | func fUint64(a uint64) uint64 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 115 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 116 | type TestUint64Alias uint64 |
| 117 | |
| 118 | func fUint64Alias(a TestUint64Alias) TestUint64Alias { return a } |
| 119 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 120 | func fUint8(a uint8) uint8 { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 121 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 122 | type TestUint8Alias uint8 |
| 123 | |
| 124 | func fUint8Alias(a TestUint8Alias) TestUint8Alias { return a } |
| 125 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 126 | func fUint(a uint) uint { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 127 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 128 | type TestUintAlias uint |
| 129 | |
| 130 | func fUintAlias(a TestUintAlias) TestUintAlias { return a } |
| 131 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 132 | func fUintptr(a uintptr) uintptr { return a } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 133 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 134 | type TestUintptrAlias uintptr |
| 135 | |
| 136 | func fUintptrAlias(a TestUintptrAlias) TestUintptrAlias { return a } |
| 137 | |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 138 | func fIntptr(a *int) *int { |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 139 | b := *a |
| 140 | return &b |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 141 | } |
| 142 | |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 143 | type TestIntptrAlias *int |
| 144 | |
| 145 | func fIntptrAlias(a TestIntptrAlias) TestIntptrAlias { return a } |
| 146 | |
Chris Kastorff | 3e9ed27 | 2015-02-04 04:43:00 -0800 | [diff] [blame] | 147 | func fArray(a [4]byte) [4]byte { return a } |
| 148 | |
| 149 | type TestArrayAlias [4]byte |
| 150 | |
| 151 | func fArrayAlias(a TestArrayAlias) TestArrayAlias { return a } |
| 152 | |
Russ Cox | eb69292 | 2011-11-01 22:05:34 -0400 | [diff] [blame] | 153 | func reportError(property string, err error, t *testing.T) { |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 154 | if err != nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 155 | t.Errorf("%s: %s", property, err) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 156 | } |
| 157 | } |
| 158 | |
| 159 | func TestCheckEqual(t *testing.T) { |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 160 | reportError("fBool", CheckEqual(fBool, fBool, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 161 | reportError("fBoolAlias", CheckEqual(fBoolAlias, fBoolAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 162 | reportError("fFloat32", CheckEqual(fFloat32, fFloat32, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 163 | reportError("fFloat32Alias", CheckEqual(fFloat32Alias, fFloat32Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 164 | reportError("fFloat64", CheckEqual(fFloat64, fFloat64, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 165 | reportError("fFloat64Alias", CheckEqual(fFloat64Alias, fFloat64Alias, nil), t) |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 166 | reportError("fComplex64", CheckEqual(fComplex64, fComplex64, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 167 | reportError("fComplex64Alias", CheckEqual(fComplex64Alias, fComplex64Alias, nil), t) |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 168 | reportError("fComplex128", CheckEqual(fComplex128, fComplex128, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 169 | reportError("fComplex128Alias", CheckEqual(fComplex128Alias, fComplex128Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 170 | reportError("fInt16", CheckEqual(fInt16, fInt16, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 171 | reportError("fInt16Alias", CheckEqual(fInt16Alias, fInt16Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 172 | reportError("fInt32", CheckEqual(fInt32, fInt32, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 173 | reportError("fInt32Alias", CheckEqual(fInt32Alias, fInt32Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 174 | reportError("fInt64", CheckEqual(fInt64, fInt64, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 175 | reportError("fInt64Alias", CheckEqual(fInt64Alias, fInt64Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 176 | reportError("fInt8", CheckEqual(fInt8, fInt8, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 177 | reportError("fInt8Alias", CheckEqual(fInt8Alias, fInt8Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 178 | reportError("fInt", CheckEqual(fInt, fInt, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 179 | reportError("fIntAlias", CheckEqual(fIntAlias, fIntAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 180 | reportError("fInt32", CheckEqual(fInt32, fInt32, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 181 | reportError("fInt32Alias", CheckEqual(fInt32Alias, fInt32Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 182 | reportError("fMap", CheckEqual(fMap, fMap, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 183 | reportError("fMapAlias", CheckEqual(fMapAlias, fMapAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 184 | reportError("fSlice", CheckEqual(fSlice, fSlice, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 185 | reportError("fSliceAlias", CheckEqual(fSliceAlias, fSliceAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 186 | reportError("fString", CheckEqual(fString, fString, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 187 | reportError("fStringAlias", CheckEqual(fStringAlias, fStringAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 188 | reportError("fStruct", CheckEqual(fStruct, fStruct, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 189 | reportError("fStructAlias", CheckEqual(fStructAlias, fStructAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 190 | reportError("fUint16", CheckEqual(fUint16, fUint16, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 191 | reportError("fUint16Alias", CheckEqual(fUint16Alias, fUint16Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 192 | reportError("fUint32", CheckEqual(fUint32, fUint32, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 193 | reportError("fUint32Alias", CheckEqual(fUint32Alias, fUint32Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 194 | reportError("fUint64", CheckEqual(fUint64, fUint64, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 195 | reportError("fUint64Alias", CheckEqual(fUint64Alias, fUint64Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 196 | reportError("fUint8", CheckEqual(fUint8, fUint8, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 197 | reportError("fUint8Alias", CheckEqual(fUint8Alias, fUint8Alias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 198 | reportError("fUint", CheckEqual(fUint, fUint, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 199 | reportError("fUintAlias", CheckEqual(fUintAlias, fUintAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 200 | reportError("fUintptr", CheckEqual(fUintptr, fUintptr, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 201 | reportError("fUintptrAlias", CheckEqual(fUintptrAlias, fUintptrAlias, nil), t) |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 202 | reportError("fIntptr", CheckEqual(fIntptr, fIntptr, nil), t) |
Jonathan Hseu | c691ae6 | 2013-05-14 17:14:59 -0700 | [diff] [blame] | 203 | reportError("fIntptrAlias", CheckEqual(fIntptrAlias, fIntptrAlias, nil), t) |
Chris Kastorff | 3e9ed27 | 2015-02-04 04:43:00 -0800 | [diff] [blame] | 204 | reportError("fArray", CheckEqual(fArray, fArray, nil), t) |
| 205 | reportError("fArrayAlais", CheckEqual(fArrayAlias, fArrayAlias, nil), t) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 206 | } |
| 207 | |
| 208 | // This tests that ArbitraryValue is working by checking that all the arbitrary |
| 209 | // values of type MyStruct have x = 42. |
| 210 | type myStruct struct { |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 211 | x int |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 212 | } |
| 213 | |
| 214 | func (m myStruct) Generate(r *rand.Rand, _ int) reflect.Value { |
Russ Cox | 07abf1c | 2011-04-25 13:39:36 -0400 | [diff] [blame] | 215 | return reflect.ValueOf(myStruct{x: 42}) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 216 | } |
| 217 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 218 | func myStructProperty(in myStruct) bool { return in.x == 42 } |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 219 | |
| 220 | func TestCheckProperty(t *testing.T) { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 221 | reportError("myStructProperty", Check(myStructProperty, nil), t) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 222 | } |
| 223 | |
| 224 | func TestFailure(t *testing.T) { |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 225 | f := func(x int) bool { return false } |
| 226 | err := Check(f, nil) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 227 | if err == nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 228 | t.Errorf("Check didn't return an error") |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 229 | } |
| 230 | if _, ok := err.(*CheckError); !ok { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 231 | t.Errorf("Error was not a CheckError: %s", err) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 232 | } |
| 233 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 234 | err = CheckEqual(fUint, fUint32, nil) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 235 | if err == nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 236 | t.Errorf("#1 CheckEqual didn't return an error") |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 237 | } |
| 238 | if _, ok := err.(SetupError); !ok { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 239 | t.Errorf("#1 Error was not a SetupError: %s", err) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 240 | } |
| 241 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 242 | err = CheckEqual(func(x, y int) {}, func(x int) {}, nil) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 243 | if err == nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 244 | t.Errorf("#2 CheckEqual didn't return an error") |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 245 | } |
| 246 | if _, ok := err.(SetupError); !ok { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 247 | t.Errorf("#2 Error was not a SetupError: %s", err) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 248 | } |
| 249 | |
Robert Griesemer | 45ca9f7 | 2009-12-15 15:41:46 -0800 | [diff] [blame] | 250 | err = CheckEqual(func(x int) int { return 0 }, func(x int) int32 { return 0 }, nil) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 251 | if err == nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 252 | t.Errorf("#3 CheckEqual didn't return an error") |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 253 | } |
| 254 | if _, ok := err.(SetupError); !ok { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 255 | t.Errorf("#3 Error was not a SetupError: %s", err) |
Adam Langley | 878d0e1 | 2009-10-28 15:16:20 -0700 | [diff] [blame] | 256 | } |
| 257 | } |