zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

test_union_method.zig (648B) - Raw


      1 const std = @import("std");
      2 const expect = std.testing.expect;
      3 
      4 const Variant = union(enum) {
      5     int: i32,
      6     boolean: bool,
      7 
      8     // void can be omitted when inferring enum tag type.
      9     none,
     10 
     11     fn truthy(self: Variant) bool {
     12         return switch (self) {
     13             Variant.int => |x_int| x_int != 0,
     14             Variant.boolean => |x_bool| x_bool,
     15             Variant.none => false,
     16         };
     17     }
     18 };
     19 
     20 test "union method" {
     21     var v1: Variant = .{ .int = 1 };
     22     var v2: Variant = .{ .boolean = false };
     23     var v3: Variant = .none;
     24 
     25     try expect(v1.truthy());
     26     try expect(!v2.truthy());
     27     try expect(!v3.truthy());
     28 }
     29 
     30 // test