root / trunk / tests / Basic.c

Revision 154, 4.1 kB (checked in by why, 5 years ago)

- lib/gram.y: added new scalar style, which reports whether a string

comes in as a plain, block, single-, or double-quoted string.

- lib/syck.h: ditto.
- lib/token.re: ditto.
- lib/node.c: ditto.
- ext/ruby/ext/syck/rubyext.c: symbols now only detected if the

scalar is plain. beginning of custom implicits!

- ext/ruby/lib/yaml*: fixes from Ruby CVS.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1//
2// Basic.c
3//
4// $Author$
5// $Date$
6//
7// Copyright (C) 2003 why the lucky stiff
8//
9
10#include "syck.h"
11#include "CuTest.h"
12
13//
14// Test allocating a single node of kind 'str'.
15//
16void
17TestSyckNodeAlloc( CuTest *tc )
18{
19    SyckNode* n;
20
21    n = syck_new_str( "YAML", scalar_plain );
22
23    CuAssert( tc, "Allocated 'str' node reporting as 'seq'.", n->kind != syck_seq_kind );
24    CuAssert( tc, "Allocated 'str' node reporting as 'map'.", n->kind != syck_map_kind );
25    CuAssert( tc, "Allocated 'str' not reporting as 'str'.", n->kind == syck_str_kind );
26    CuAssertStrEquals( tc, "YAML", syck_str_read( n ) );
27
28    syck_free_node( n );
29}
30
31//
32// Test building a simple sequence
33//
34void
35TestSyckSeqAlloc( CuTest *tc )
36{
37    SyckNode *n;
38    SYMID id;
39
40    n = syck_new_seq( 1 );
41    for ( id = 11001; id < 23000; id += 24 )
42    {
43        syck_seq_add( n, id );
44    }
45
46    CuAssert( tc, "Invalid value at '0'", 1 == syck_seq_read( n, 0 ) );
47    CuAssert( tc, "Invalid value at '1'", 11001 == syck_seq_read( n, 1 ) );
48    CuAssert( tc, "Invalid value at '200'", 15801 == syck_seq_read( n, 201 ) );
49
50    syck_free_node( n );
51}
52
53//
54// Test building a simple map
55//
56void
57TestSyckMapAlloc( CuTest *tc )
58{
59    SyckNode *n;
60
61    n = syck_new_map( 24556, 24557 );
62    syck_map_add( n, 24558, 24559 );
63    syck_map_add( n, 24658, 24659 );
64    syck_map_add( n, 24758, 24759 );
65    syck_map_add( n, 24858, 24859 );
66    syck_map_add( n, 24958, 24959 );
67    syck_map_add( n, 24058, 24059 );
68    syck_map_add( n, 24158, 24159 );
69
70    CuAssert( tc, "Invalid key at '0'.", 24556 == syck_map_read( n, map_key, 0 ) );
71    CuAssert( tc, "Invalid key at '1'.", 24558 == syck_map_read( n, map_key, 1 ) );
72    CuAssert( tc, "Invalid key at '2'.", 24658 == syck_map_read( n, map_key, 2 ) );
73    CuAssert( tc, "Invalid key at '3'.", 24758 == syck_map_read( n, map_key, 3 ) );
74    CuAssert( tc, "Invalid key at '4'.", 24858 == syck_map_read( n, map_key, 4 ) );
75    CuAssert( tc, "Invalid key at '5'.", 24958 == syck_map_read( n, map_key, 5 ) );
76    CuAssert( tc, "Invalid key at '6'.", 24058 == syck_map_read( n, map_key, 6 ) );
77    CuAssert( tc, "Invalid key at '7'.", 24158 == syck_map_read( n, map_key, 7 ) );
78    CuAssert( tc, "Invalid value at '0'", 24557 == syck_map_read( n, map_value, 0 ) );
79    CuAssert( tc, "Invalid value at '1'", 24559 == syck_map_read( n, map_value, 1 ) );
80    CuAssert( tc, "Invalid value at '2'", 24659 == syck_map_read( n, map_value, 2 ) );
81    CuAssert( tc, "Invalid value at '3'", 24759 == syck_map_read( n, map_value, 3 ) );
82    CuAssert( tc, "Invalid value at '4'", 24859 == syck_map_read( n, map_value, 4 ) );
83    CuAssert( tc, "Invalid value at '5'", 24959 == syck_map_read( n, map_value, 5 ) );
84    CuAssert( tc, "Invalid value at '6'", 24059 == syck_map_read( n, map_value, 6 ) );
85    CuAssert( tc, "Invalid value at '7'", 24159 == syck_map_read( n, map_value, 7 ) );
86
87    syck_free_node( n );
88}
89
90//
91// Test building a simple map
92//
93void
94TestSyckMapUpdate( CuTest *tc )
95{
96    SyckNode *n1, *n2;
97
98    n1 = syck_new_map( 51116, 51117 );
99    syck_map_add( n1, 51118, 51119 );
100    n2 = syck_new_map( 51126, 51127 );
101    syck_map_add( n2, 51128, 51129 );
102
103    syck_map_update( n1, n2 );
104    CuAssert( tc, "Invalid key at '2'", 51126 == syck_map_read( n1, map_key, 2 ) );
105    CuAssert( tc, "Invalid key at '3'", 51128 == syck_map_read( n1, map_key, 3 ) );
106    CuAssert( tc, "Invalid value at '2'", 51127 == syck_map_read( n1, map_value, 2 ) );
107    CuAssert( tc, "Invalid value at '3'", 51129 == syck_map_read( n1, map_value, 3 ) );
108
109    syck_free_node( n2 );
110    syck_free_node( n1 );
111}
112
113CuSuite *
114SyckGetSuite()
115{
116    CuSuite *suite = CuSuiteNew();
117    SUITE_ADD_TEST( suite, TestSyckNodeAlloc );
118    SUITE_ADD_TEST( suite, TestSyckSeqAlloc );
119    SUITE_ADD_TEST( suite, TestSyckMapAlloc );
120    SUITE_ADD_TEST( suite, TestSyckMapUpdate );
121    return suite;
122}
123
124int main(void)
125{
126        CuString *output = CuStringNew();
127        CuSuite* suite = SyckGetSuite();
128    int count;
129       
130        CuSuiteRun(suite);
131        CuSuiteSummary(suite, output);
132        CuSuiteDetails(suite, output);
133
134        printf("%s\n", output->buffer);
135    count = suite->failCount;
136
137    CuStringFree( output );
138    CuSuiteFree( suite );
139
140    return count;
141}
Note: See TracBrowser for help on using the browser.