2024-02-24 10:48:07 +00:00
|
|
|
{ pkgs, lib }:
|
|
|
|
|
|
|
|
let
|
|
|
|
customOctalGlyphs = {
|
|
|
|
"0" = "A";
|
|
|
|
"1" = "B";
|
|
|
|
"2" = "C";
|
|
|
|
"3" = "D";
|
|
|
|
"4" = "E";
|
|
|
|
"5" = "F";
|
|
|
|
"6" = "G";
|
|
|
|
"7" = "H";
|
|
|
|
};
|
|
|
|
|
2024-02-28 10:39:00 +00:00
|
|
|
base24GlyphsList = [
|
|
|
|
"0"
|
|
|
|
"1"
|
|
|
|
"2"
|
|
|
|
"3"
|
|
|
|
"4"
|
|
|
|
"5"
|
|
|
|
"6"
|
|
|
|
"7"
|
|
|
|
"8"
|
|
|
|
"9"
|
|
|
|
"A"
|
|
|
|
"B"
|
|
|
|
"C"
|
|
|
|
"D"
|
|
|
|
"E"
|
|
|
|
"F"
|
|
|
|
"G"
|
|
|
|
"H"
|
|
|
|
"I"
|
|
|
|
"J"
|
|
|
|
"K"
|
|
|
|
"L"
|
|
|
|
"M"
|
|
|
|
"N"
|
|
|
|
];
|
|
|
|
|
2024-02-24 10:48:07 +00:00
|
|
|
customBase24Glyphs = {
|
|
|
|
"0" = "0";
|
|
|
|
"1" = "1";
|
|
|
|
"2" = "2";
|
|
|
|
"3" = "3";
|
|
|
|
"4" = "4";
|
|
|
|
"5" = "5";
|
|
|
|
"6" = "6";
|
|
|
|
"7" = "7";
|
|
|
|
"8" = "8";
|
|
|
|
"9" = "9";
|
|
|
|
"10" = "A";
|
|
|
|
"11" = "B";
|
|
|
|
"12" = "C";
|
|
|
|
"13" = "D";
|
|
|
|
"14" = "E";
|
|
|
|
"15" = "F";
|
|
|
|
"16" = "G";
|
|
|
|
"17" = "H";
|
|
|
|
"18" = "I";
|
|
|
|
"19" = "J";
|
2024-02-28 10:39:00 +00:00
|
|
|
"20" = "K";
|
|
|
|
"21" = "L";
|
|
|
|
"22" = "M";
|
|
|
|
"23" = "N";
|
2024-02-24 10:48:07 +00:00
|
|
|
};
|
2024-02-28 10:39:00 +00:00
|
|
|
|
|
|
|
base24Set = lib.trivial.generateBaseDigitType base24GlyphsList;
|
2024-02-24 10:48:07 +00:00
|
|
|
in
|
|
|
|
pkgs.lib.runTests {
|
2024-02-24 10:59:25 +00:00
|
|
|
testGenerateCustomGlyphSet = {
|
|
|
|
expr = lib.trivial.generateGlyphSet [ "A" "B" "C" "D" "E" "F" "G" "H" ];
|
|
|
|
expected = customOctalGlyphs;
|
|
|
|
};
|
|
|
|
|
|
|
|
testGenerateBase24GlyphSet = {
|
2024-02-28 10:39:00 +00:00
|
|
|
expr = lib.trivial.generateGlyphSet base24GlyphsList;
|
2024-02-24 10:59:25 +00:00
|
|
|
expected = customBase24Glyphs;
|
|
|
|
};
|
|
|
|
|
2024-02-28 02:43:37 +00:00
|
|
|
testGenerateConversionTable = {
|
|
|
|
expr = lib.trivial.generateConversionTable [ "A" "B" "C" "D" "E" "F" "G" "H" ];
|
|
|
|
expected = {
|
|
|
|
"A" = 0;
|
|
|
|
"B" = 1;
|
|
|
|
"C" = 2;
|
|
|
|
"D" = 3;
|
|
|
|
"E" = 4;
|
|
|
|
"F" = 5;
|
|
|
|
"G" = 6;
|
|
|
|
"H" = 7;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-02-28 10:39:00 +00:00
|
|
|
testGenerateConversionTable2 = {
|
|
|
|
expr = lib.trivial.generateConversionTable
|
|
|
|
[ "0" "1" "2" "3" "4" "5" "6" "7"
|
|
|
|
"8" "9" "A" "B" "C" "D" "E" "F" ];
|
|
|
|
expected = {
|
|
|
|
"0" = 0;
|
|
|
|
"1" = 1;
|
|
|
|
"2" = 2;
|
|
|
|
"3" = 3;
|
|
|
|
"4" = 4;
|
|
|
|
"5" = 5;
|
|
|
|
"6" = 6;
|
|
|
|
"7" = 7;
|
|
|
|
"8" = 8;
|
|
|
|
"9" = 9;
|
|
|
|
"A" = 10;
|
|
|
|
"B" = 11;
|
|
|
|
"C" = 12;
|
|
|
|
"D" = 13;
|
|
|
|
"E" = 14;
|
|
|
|
"F" = 15;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
# Testing out the custom factory methods if they are working as intended.
|
|
|
|
testCustomBaseDigitSetToDec = {
|
|
|
|
expr = base24Set.toDec "12H";
|
|
|
|
expected = 641;
|
|
|
|
};
|
|
|
|
|
|
|
|
testCustomBaseDigitSetFromDec = {
|
|
|
|
expr = base24Set.fromDec 641;
|
|
|
|
expected = "12H";
|
|
|
|
};
|
|
|
|
|
2024-02-24 10:48:07 +00:00
|
|
|
testBaseDigitWithCustomOctalGlyph = {
|
|
|
|
expr = lib.trivial.toBaseDigitsWithGlyphs 8 9 customOctalGlyphs;
|
|
|
|
expected = "BB";
|
|
|
|
};
|
|
|
|
|
|
|
|
testBaseDigitWithCustomOctalGlyph2 = {
|
|
|
|
expr = lib.trivial.toBaseDigitsWithGlyphs 8 641 customOctalGlyphs;
|
|
|
|
expected = "BCAB";
|
|
|
|
};
|
|
|
|
|
|
|
|
testBaseDigitWithProperBase24Glyph = {
|
|
|
|
expr = lib.trivial.toBaseDigitsWithGlyphs 24 641 customBase24Glyphs;
|
|
|
|
expected = "12H";
|
|
|
|
};
|
|
|
|
|
|
|
|
testBaseDigitWithProperBase24Glyph2 = {
|
|
|
|
expr = lib.trivial.toBaseDigitsWithGlyphs 24 2583 customBase24Glyphs;
|
|
|
|
expected = "4BF";
|
|
|
|
};
|
|
|
|
|
|
|
|
# We're mainly testing if the underlying YAML library is mostly compliant
|
|
|
|
# with whatever it claims.
|
|
|
|
testImportBasicYAML = {
|
|
|
|
expr = lib.trivial.importYAML ./simple.yml;
|
|
|
|
expected = {
|
|
|
|
hello = "there";
|
|
|
|
how-are-you-doing = "I'm fine. Thank you for asking.\n";
|
|
|
|
"It's a number" = 53;
|
|
|
|
dog-breeds = [ "chihuahua" "golden retriever" ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
testImportTintedThemingBase16YAML = {
|
|
|
|
expr = lib.trivial.importYAML ../tinted-theming/sample-base16-scheme.yml;
|
|
|
|
expected = {
|
|
|
|
system = "base16";
|
|
|
|
name = "Bark on a tree";
|
|
|
|
author = "Gabriel Arazas (https://foodogsquared.one)";
|
|
|
|
description = "Rusty theme resembling forestry inspired from Nord theme.";
|
|
|
|
variant = "dark";
|
|
|
|
palette = {
|
|
|
|
base00 = "2b221f";
|
|
|
|
base01 = "412c26";
|
|
|
|
base02 = "5c362c";
|
|
|
|
base03 = "a45b43";
|
|
|
|
base04 = "e1bcb2";
|
|
|
|
base05 = "f5ecea";
|
|
|
|
base06 = "fefefe";
|
|
|
|
base07 = "eb8a65";
|
|
|
|
base08 = "d03e68";
|
|
|
|
base09 = "df937a";
|
|
|
|
base0A = "afa644";
|
|
|
|
base0B = "85b26e";
|
|
|
|
base0C = "eb914a";
|
|
|
|
base0D = "c67f62";
|
|
|
|
base0E = "8b7ab9";
|
|
|
|
base0F = "7f3F83";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
# YAML is a superset of JSON (or was it the other way around?) after v1.2.
|
|
|
|
testToYAML = {
|
|
|
|
expr = lib.trivial.toYAML { } { hello = "there"; };
|
|
|
|
expected = "{\"hello\":\"there\"}";
|
|
|
|
};
|
2024-02-28 02:43:37 +00:00
|
|
|
|
|
|
|
testPow = {
|
|
|
|
expr = lib.trivial.pow 2 8;
|
|
|
|
expected = 256;
|
|
|
|
};
|
2024-02-24 10:48:07 +00:00
|
|
|
}
|