mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
303 lines
6.1 KiB
Nix
303 lines
6.1 KiB
Nix
{ pkgs, lib, self }:
|
|
|
|
let
|
|
# The typical rounding procedure for our results. 10 decimal places should be
|
|
# enough to test accuracy at least for a basic math subset like this.
|
|
round' = self.math.round' (-6);
|
|
|
|
customOctalGlyphs = {
|
|
"0" = "A";
|
|
"1" = "B";
|
|
"2" = "C";
|
|
"3" = "D";
|
|
"4" = "E";
|
|
"5" = "F";
|
|
"6" = "G";
|
|
"7" = "H";
|
|
};
|
|
|
|
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"
|
|
];
|
|
|
|
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";
|
|
"20" = "K";
|
|
"21" = "L";
|
|
"22" = "M";
|
|
"23" = "N";
|
|
};
|
|
|
|
base24Set = self.trivial.generateBaseDigitType base24GlyphsList;
|
|
in
|
|
lib.runTests {
|
|
testGenerateCustomGlyphSet = {
|
|
expr = self.trivial.generateGlyphSet [ "A" "B" "C" "D" "E" "F" "G" "H" ];
|
|
expected = customOctalGlyphs;
|
|
};
|
|
|
|
testGenerateBase24GlyphSet = {
|
|
expr = self.trivial.generateGlyphSet base24GlyphsList;
|
|
expected = customBase24Glyphs;
|
|
};
|
|
|
|
testGenerateConversionTable = {
|
|
expr = self.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;
|
|
};
|
|
};
|
|
|
|
testGenerateConversionTable2 = {
|
|
expr = self.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";
|
|
};
|
|
|
|
testBaseDigitWithCustomOctalGlyph = {
|
|
expr = self.trivial.toBaseDigitsWithGlyphs 8 9 customOctalGlyphs;
|
|
expected = "BB";
|
|
};
|
|
|
|
testBaseDigitWithCustomOctalGlyph2 = {
|
|
expr = self.trivial.toBaseDigitsWithGlyphs 8 641 customOctalGlyphs;
|
|
expected = "BCAB";
|
|
};
|
|
|
|
testBaseDigitWithProperBase24Glyph = {
|
|
expr = self.trivial.toBaseDigitsWithGlyphs 24 641 customBase24Glyphs;
|
|
expected = "12H";
|
|
};
|
|
|
|
testBaseDigitWithProperBase24Glyph2 = {
|
|
expr = self.trivial.toBaseDigitsWithGlyphs 24 2583 customBase24Glyphs;
|
|
expected = "4BF";
|
|
};
|
|
|
|
# We're mainly testing if the underlying YAML selfrary is mostly compliant
|
|
# with whatever it claims.
|
|
testImportBasicYAML = {
|
|
expr = self.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 = self.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 = self.trivial.toYAML { } { hello = "there"; };
|
|
expected = "{\"hello\":\"there\"}";
|
|
};
|
|
|
|
testNumberClamp = {
|
|
expr = self.trivial.clamp 1 10 4;
|
|
expected = 4;
|
|
};
|
|
|
|
testNumberClampMin = {
|
|
expr = self.trivial.clamp 1 10 (-5);
|
|
expected = 1;
|
|
};
|
|
|
|
testNumberClampMax = {
|
|
expr = self.trivial.clamp 1 10 453;
|
|
expected = 10;
|
|
};
|
|
|
|
testNumberScale = {
|
|
expr = self.trivial.scale { inMin = 0; inMax = 15; outMin = 0; outMax = 255; } 15;
|
|
expected = 255;
|
|
};
|
|
|
|
testNumberScale2 = {
|
|
expr = self.trivial.scale { inMin = 0; inMax = 15; outMin = 0; outMax = 255; } 4;
|
|
expected = 68;
|
|
};
|
|
|
|
testNumberScale3 = {
|
|
expr = self.trivial.scale { inMin = 0; inMax = 15; outMin = 0; outMax = 255; } (-4);
|
|
expected = (-68);
|
|
};
|
|
|
|
testNumberScaleFloat = {
|
|
expr = self.trivial.scale { inMin = 0; inMax = 255; outMin = 0.0; outMax = 1.0; } 255;
|
|
expected = 1.0;
|
|
};
|
|
|
|
testNumberScaleFloat2 = {
|
|
expr = self.trivial.scale { inMin = 0; inMax = 255; outMin = 0.0; outMax = 1.0; } 127.5;
|
|
expected = 0.5;
|
|
};
|
|
|
|
testNumberScaleFloat3 = {
|
|
expr = round' (self.trivial.scale { inMin = 0; inMax = 255; outMin = 0.0; outMax = 1.0; } 53);
|
|
expected = round' 0.207843;
|
|
};
|
|
|
|
testIsNumber1 = {
|
|
expr = self.trivial.isNumber 3;
|
|
expected = true;
|
|
};
|
|
|
|
testIsNumber2 = {
|
|
expr = self.trivial.isNumber 4.09;
|
|
expected = true;
|
|
};
|
|
|
|
testIsNumber3 = {
|
|
expr = self.trivial.isNumber "HELLO";
|
|
expected = false;
|
|
};
|
|
|
|
testIsNumber4 = {
|
|
expr = self.trivial.isNumber true;
|
|
expected = false;
|
|
};
|
|
|
|
testOptionalNull = {
|
|
expr = self.trivial.optionalNull true "HELLO";
|
|
expected = "HELLO";
|
|
};
|
|
|
|
testOptionalNull2 = {
|
|
expr = self.trivial.optionalNull false "HELLO";
|
|
expected = null;
|
|
};
|
|
|
|
testToFloat = {
|
|
expr = self.trivial.toFloat 46;
|
|
expected = 46.0;
|
|
};
|
|
|
|
testToFloat2 = {
|
|
expr = self.trivial.toFloat 26.5;
|
|
expected = 26.5;
|
|
};
|
|
}
|