aboutsummaryrefslogtreecommitdiffstats
path: root/test/_functions.scss
blob: 54e37c5bbe3631e8e2caf44b0acc022212540113 (plain) (blame)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
@include describe('Functions') {
    @include it('iro-str-replace') {
        $str: 'Hello world!';

        @include assert-equal(iro-str-replace($str, 'world', 'neighbor'), 'Hello neighbor!', 'Replace "world" with "neighbor"');
        @include assert-equal(iro-str-replace($str, 'neighbor', 'moon'),  'Hello world!',    'Replace "neighbor" with "moon"');
        @include assert-equal(iro-str-replace($str, 'Hello', 'Bye'),      'Bye world!',      'Replace "Hello" with "Bye"');
    }

    @include it('iro-list-slice') {
        $list: 'this' 'is' 'a' 'list';

        @include assert-equal(iro-list-slice($list, 2),      'is' 'a' 'list',  'Discard first item');
        @include assert-equal(iro-list-slice($list, 1, 3),   'this' 'is' 'a',  'Keep first 3 items');
        @include assert-equal(iro-list-slice($list, 2, 3),   'is' 'a',         'Extract list from index 2 to 3');
        @include assert-equal(iro-list-slice($list, -1, -1), join((), 'list'), 'Keep last item');
        @include assert-equal(iro-list-slice($list, -1, 1),  'list' 'this',    'Extract first and last item');
    }

    @include it('iro-list-prepend') {
        $list: 'this' 'is' 'a' 'list';

        @include assert-equal(iro-list-prepend($list, 'and'), 'and' 'this' 'is' 'a' 'list', 'Prepend "and"');
        @include assert-equal(iro-list-prepend($list, 2),     2 'this' 'is' 'a' 'list',     'Prepend 2');
    }

    @include it('iro-quicksort') {
        @include assert-equal(iro-quicksort(1 2 3 4 5),     1 2 3 4 5,     'Already sorted list of 5 items');
        @include assert-equal(iro-quicksort(1 3 2),         1 2 3,         'Random list of 3 items');
        @include assert-equal(iro-quicksort(6 3 7 3 8 1 4), 1 3 3 4 6 7 8, 'Random list of 7 items, one duplicate');
        @include assert-equal(iro-quicksort(1 1 1 1),       1 1 1 1,       'List of 4 identical items');
    }

    @include it('iro-map-get-default') {
        $map: ('key': 'value', 'another': 'item');

        @include assert-equal(iro-map-get-default($map, 'another', 0),         map-get($map, 'another'), 'Get existing value');
        @include assert-equal(iro-map-get-default($map, 'index',   'nothing'), 'nothing',                'Get missing value');
    }

    @include it('iro-map-get-deep') {
        $map: (
            'key': 'value',
            'sub': (
                'item1': 1,
                'item2': 2,
                'subsub': (
                    'item1': 11,
                    'item2': 12,
                )
            )
        );

        @include assert-equal(iro-map-get-deep($map, 'key'),                  map-get($map, 'key'),                                      'Get value in root level');
        @include assert-equal(iro-map-get-deep($map, 'sub' 'item1'),          map-get(map-get($map, 'sub'), 'item1'),                    'Get value in first level');
        @include assert-equal(iro-map-get-deep($map, 'sub' 'item2'),          map-get(map-get($map, 'sub'), 'item2'),                    'Get value in first level');
        @include assert-equal(iro-map-get-deep($map, 'sub' 'subsub' 'item1'), map-get(map-get(map-get($map, 'sub'), 'subsub'), 'item1'), 'Get value in second level');
        @include assert-equal(iro-map-get-deep($map, 'sub' 'subsub' 'item2'), map-get(map-get(map-get($map, 'sub'), 'subsub'), 'item2'), 'Get value in second level');
    }

    @include it('iro-map-merge-recursive') {
        $map1: (
            'key': 'value',
            'sub': (
                'item1': 1,
                'item3': 2
            )
        );
        $map2: (
            'another': 'item',
            'sub': (
                'item1': 0,
                'item2': 1
            )
        );

        $expected: (
            'key':     'value',
            'another': 'item',
            'sub': (
                'item1': 0,
                'item2': 1,
                'item3': 2
            )
        );

        @include assert-equal(iro-map-merge-recursive($map1, $map2), $expected);
    }

    @include it('iro-strip-unit') {
        @include assert-true(unitless(iro-strip-unit(1em)),  'Remove unit from 1em');
        @include assert-true(unitless(iro-strip-unit(2rem)), 'Remove unit from 2rem');
        @include assert-true(unitless(iro-strip-unit(3px)),  'Remove unit from 3px');
        @include assert-true(unitless(iro-strip-unit(4)),    'Remove unit from 4');
        @include assert-true(unitless(iro-strip-unit(5pt)),  'Remove unit from 5pt');
    }

    @include it('iro-px-to-rem') {
        @include assert-equal(iro-px-to-rem(16px, 16px), 1rem,   'Convert 16px');
        @include assert-equal(iro-px-to-rem(32px, 16px), 2rem,   'Convert 16px');
        @include assert-equal(iro-px-to-rem(8px, 16px),  0.5rem, 'Convert 16px');
    }
}