]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/enums/enums-tests.factor
a7fd665e1374b688ab242b5faadfff266166c684
[factor.git] / basis / alien / enums / enums-tests.factor
1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.c-types alien.enums alien.enums.private
4 alien.syntax sequences tools.test words ;
5 IN: alien.enums.tests
6
7 ENUM: color_t red { green 3 } blue ;
8 ENUM: instrument_t < ushort trombone trumpet ;
9
10 { { red green blue 5 } }
11 [ { 0 3 4 5 } [ <color_t> ] map ] unit-test
12
13 { { 0 3 4 5 } }
14 [ { red green blue 5 } [ enum>number ] map ] unit-test
15
16 { { -1 trombone trumpet } }
17 [ { -1 0 1 } [ <instrument_t> ] map ] unit-test
18
19 { { -1 0 1 } }
20 [ { -1 trombone trumpet } [ enum>number ] map ] unit-test
21
22 { t }
23 [ color_t "c-type" word-prop enum-c-type? ] unit-test
24
25 { f }
26 [ ushort "c-type" word-prop enum-c-type? ] unit-test
27
28 { int }
29 [ color_t "c-type" word-prop base-type>> ] unit-test
30
31 { ushort }
32 [ instrument_t "c-type" word-prop base-type>> ] unit-test
33
34 { V{ { red 0 } { green 3 } { blue 4 } } }
35 [ color_t "c-type" word-prop members>> ] unit-test
36
37 ENUM: colores { rojo red } { verde green } { azul blue } { colorado rojo } ;
38
39 [ { 0 3 4 0 } ] [ { rojo verde azul colorado } [ enum>number ] map ] unit-test
40
41 SYMBOLS: couleurs rouge vert bleu jaune azure ;
42
43 << \ couleurs int {
44     { rouge red }
45     { vert green }
46     { bleu blue }
47     { jaune 14 }
48     { azure bleu }
49 } define-enum >>
50
51 [ { 0 3 4 14 4 } ] [ { rouge vert bleu jaune azure } [ enum>number ] map ] unit-test