mirror of
https://codeberg.org/andyscott/exercism.git
synced 2024-11-09 13:20:48 -05:00
75 lines
2.7 KiB
Zig
75 lines
2.7 KiB
Zig
|
const std = @import("std");
|
||
|
const testing = std.testing;
|
||
|
|
||
|
const rotational_cipher = @import("rotational_cipher.zig");
|
||
|
|
||
|
test "rotate a by 0, same output as input" {
|
||
|
const expected: []const u8 = "a";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "a", 0);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate a by 1" {
|
||
|
const expected: []const u8 = "b";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "a", 1);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate a by 26, same output as input" {
|
||
|
const expected: []const u8 = "a";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "a", 26);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate m by 13" {
|
||
|
const expected: []const u8 = "z";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "m", 13);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate n by 13 with wrap around alphabet" {
|
||
|
const expected: []const u8 = "a";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "n", 13);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate capital letters" {
|
||
|
const expected: []const u8 = "TRL";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "OMG", 5);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate spaces" {
|
||
|
const expected: []const u8 = "T R L";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "O M G", 5);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate numbers" {
|
||
|
const expected: []const u8 = "Xiwxmrk 1 2 3 xiwxmrk";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "Testing 1 2 3 testing", 4);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate punctuation" {
|
||
|
const expected: []const u8 = "Gzo'n zvo, Bmviyhv!";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "Let's eat, Grandma!", 21);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|
||
|
|
||
|
test "rotate all letters" {
|
||
|
const expected: []const u8 = "Gur dhvpx oebja sbk whzcf bire gur ynml qbt.";
|
||
|
const actual = try rotational_cipher.rotate(testing.allocator, "The quick brown fox jumps over the lazy dog.", 13);
|
||
|
defer testing.allocator.free(actual);
|
||
|
try testing.expectEqualStrings(expected, actual);
|
||
|
}
|