aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/bugs/2889.zig
blob: eec2232ca7f4f53cdfd7bb01e8cb4fedadc5d428 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const std = @import("std");
const builtin = @import("builtin");

const source = "A-";

fn parseNote() ?i32 {
    const letter = source[0];
    const modifier = source[1];

    const semitone = blk: {
        if (letter == 'C' and modifier == '-') break :blk @as(i32, 0);
        if (letter == 'C' and modifier == '#') break :blk @as(i32, 1);
        if (letter == 'D' and modifier == '-') break :blk @as(i32, 2);
        if (letter == 'D' and modifier == '#') break :blk @as(i32, 3);
        if (letter == 'E' and modifier == '-') break :blk @as(i32, 4);
        if (letter == 'F' and modifier == '-') break :blk @as(i32, 5);
        if (letter == 'F' and modifier == '#') break :blk @as(i32, 6);
        if (letter == 'G' and modifier == '-') break :blk @as(i32, 7);
        if (letter == 'G' and modifier == '#') break :blk @as(i32, 8);
        if (letter == 'A' and modifier == '-') break :blk @as(i32, 9);
        if (letter == 'A' and modifier == '#') break :blk @as(i32, 10);
        if (letter == 'B' and modifier == '-') break :blk @as(i32, 11);
        return null;
    };

    return semitone;
}

test "fixed" {
    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;

    const result = parseNote();
    try std.testing.expect(result.? == 9);
}