| author | |
| committer | |
| log | 4578d13b49d16463b870119005877f7b6e10092e |
| tree | 11279ba404a894022ebc08f401bea6fff89e347c |
| parent | 55304128c086989ad4c08e51c7708d61d544e820 |
2 files changed, 31 insertions(+), 1 deletions(-)
lib/std/meta.zig+15| ... | ... | @@ -433,6 +433,14 @@ pub fn eql(a: var, b: @TypeOf(a)) bool { |
| 433 | 433 | if (!eql(e, b[i])) return false; |
| 434 | 434 | return true; |
| 435 | 435 | }, |
| 436 | builtin.TypeId.Vector => { | |
| 437 | const info = @typeInfo(T).Vector; | |
| 438 | var i: usize = 0; | |
| 439 | while (i < info.len) : (i += 1) { | |
| 440 | if (!eql(a[i], b[i])) return false; | |
| 441 | } | |
| 442 | return true; | |
| 443 | }, | |
| 436 | 444 | builtin.TypeId.Pointer => { |
| 437 | 445 | const info = @typeInfo(T).Pointer; |
| 438 | 446 | switch (info.size) { |
| ... | ... | @@ -510,6 +518,13 @@ test "std.meta.eql" { |
| 510 | 518 | testing.expect(eql(EU.tst(true), EU.tst(true))); |
| 511 | 519 | testing.expect(eql(EU.tst(false), EU.tst(false))); |
| 512 | 520 | testing.expect(!eql(EU.tst(false), EU.tst(true))); |
| 521 | ||
| 522 | var v1 = @splat(4, @as(u32, 1)); | |
| 523 | var v2 = @splat(4, @as(u32, 1)); | |
| 524 | var v3 = @splat(4, @as(u32, 2)); | |
| 525 | ||
| 526 | testing.expect(eql(v1, v2)); | |
| 527 | testing.expect(!eql(v1, v3)); | |
| 513 | 528 | } |
| 514 | 529 | |
| 515 | 530 | test "intToEnum with error return" { |
lib/std/testing.zig+16-1| ... | ... | @@ -56,7 +56,6 @@ pub fn expectEqual(expected: var, actual: @TypeOf(expected)) void { |
| 56 | 56 | .EnumLiteral, |
| 57 | 57 | .Enum, |
| 58 | 58 | .Fn, |
| 59 | .Vector, | |
| 60 | 59 | .ErrorSet, |
| 61 | 60 | => { |
| 62 | 61 | if (actual != expected) { |
| ... | ... | @@ -88,6 +87,15 @@ pub fn expectEqual(expected: var, actual: @TypeOf(expected)) void { |
| 88 | 87 | |
| 89 | 88 | .Array => |array| expectEqualSlices(array.child, &expected, &actual), |
| 90 | 89 | |
| 90 | .Vector => |vectorType| { | |
| 91 | var i: usize = 0; | |
| 92 | while (i < vectorType.len) : (i += 1) { | |
| 93 | if (!std.meta.eql(expected[i], actual[i])) { | |
| 94 | std.debug.panic("index {} incorrect. expected {}, found {}", .{ i, expected[i], actual[i] }); | |
| 95 | } | |
| 96 | } | |
| 97 | }, | |
| 98 | ||
| 91 | 99 | .Struct => |structType| { |
| 92 | 100 | inline for (structType.fields) |field| { |
| 93 | 101 | expectEqual(@field(expected, field.name), @field(actual, field.name)); |
| ... | ... | @@ -202,3 +210,10 @@ test "expectEqual nested array" { |
| 202 | 210 | |
| 203 | 211 | expectEqual(a, b); |
| 204 | 212 | } |
| 213 | ||
| 214 | test "expectEqual vector" { | |
| 215 | var a = @splat(4, @as(u32, 4)); | |
| 216 | var b = @splat(4, @as(u32, 4)); | |
| 217 | ||
| 218 | expectEqual(a, b); | |
| 219 | } |