1 /**************************************************************************
2 ** (c) Copyright 1999, Andromeda Technology & Automation
3 ***************************************************************************
4 ** MODULE INFORMATION *
5 ***********************
6 ** FILE NAME : acltest.cpp
7 ** SYSTEM NAME : AXE - Andromeda X-windows Encapsulation
8 ** VERSION NUMBER : $Revision: 1.6 $
10 ** DESCRIPTION : Test routine for non-X classes
15 ***************************************************************************
16 ** ADMINISTRATIVE INFORMATION *
17 ********************************
18 ** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
19 ** CREATION DATE : Feb 06, 1998
20 ** LAST UPDATE : Jul 27, 2002
21 **************************************************************************/
23 /*****************************
25 Revision 1.6 2002-11-04 07:25:00 arjen
26 Use proper namespace for iostream classes
28 Revision 1.5 2002/11/03 13:19:33 arjen
29 New functions - String::escape() and String::unescape()
31 Revision 1.4 2002/09/26 14:48:46 arjen
32 Use the std: namespace for STL objects
34 Revision 1.3 2002/09/02 06:18:12 arjen
35 Fixed some date and time conversion functions
37 Revision 1.2 2002/07/27 06:34:06 arjen
38 Removed the obsolete complex number test from acltest.
39 BUG FIX: testaxe crashed when no configuration file is available.
41 Revision 1.1 2002/07/25 08:01:18 arjen
42 First checkin, AXE release 0.2
44 *****************************/
46 static const char *RCSID = "$Id: acltest.cpp,v 1.6 2002-11-04 07:25:00 arjen Exp $";
54 String hello = "Hello there";
55 String points, pattern;
57 std::cout << hello << ",length= " << ~hello << "\n";
58 std::cout << "4th character = " << hello[3] << " (Changed to L)\n";
62 std::cout << "Points is not empty\n";
64 std::cout << "Points is empty\n";
68 std::cout << "after assignment: Points is not empty\n";
70 std::cout << "after assignment: points is empty\n";
72 hello += points + String("!??");
73 std::cout << "Catenated: " << hello << ",length= " << ~hello << "\n";
75 std::cout << "Substring(10,3) = " << String(hello(10,3)) << "\n";
78 std::cout << "hello(10,3)=points ->hello = " << hello << "\n";
79 std::cout << "Substring(8,9) = " << String(hello(8,9)) << "\n";
81 std::cout << "Converted to upper case: " << hello.upper() << "\n";
82 std::cout << "Converted to lower case: " << hello.lower() << "\n";
85 std::cout << "hello(8,9)=__ ->hello = " << hello << "\n";
87 std::cout << "Removing with hello(8,7) = \"\": " << hello << "\n";
89 std::cout << "Inserting with hello(8,0) = \"ere \": " << hello << "\n";
90 hello(5, ~hello-5) = "";
91 std::cout << "Truncating with hello(5, ~hello-5) = \"\": " << hello << "\n";
93 std::cout << "String shifting:\n";
97 std::cout << x << " << 3 = " << y << "\n";
99 std::cout << x << " >> 3 = " << y << "\n";
101 std::cout << "\nInput a string:\n";
103 std::cout << hello << "\n\n";
104 std::cout << "\nAnd another one:\n";
106 std::cout << pattern << "\n\n";
107 std::cout << "Second string found at position " << pattern.in(hello);
108 std::cout << " of first string.\n";
110 std::cout << "Construct a string from an int: ";
112 std::cout << num << "\n";
114 std::cout << "***********************\nEscape Test\n*********************\n";
116 x = "\a\b\f\n\r\t\v\"'\\\xC0\x02";
118 std::cout << "Escaped sequence = " << y << "\n";
119 if (y.unescape() == x)
121 std::cout << "Escape sequence converts back into original string.\n";
125 std::cout << "Escape sequence does NOT convert back into original string.\n";
127 std::cout << x.escape() << "\n";
130 std::cout << "***********************\nInteger Test\n*********************\n";
131 integer a(2000000000), b(2048);
134 std::cout << "a = " << a << ", b = " << b << "\n";
135 std::cout << "c = " << c << "\n";
137 std::cout << "c = b : c = " << c << "\n";
139 std::cout << "***********************\nDate Test\n*********************\n";
141 date d1, d2(22,7,1964);
143 std::cout << "Default constructor: " << d1 << ", with (d,m,y): " << d2 << "\n";
144 std::cout << "Enter a date: \n";
148 std::cin >> datestring;
149 d2 = date(datestring);
151 std::cout << datestring << " parses into (DD-MM-YYYY): " << d2 << "\n";
152 datestring = d2.format("%F");
153 std::cout << "Formatted date: " << datestring << "\n";
157 std::cout << "Size of a date is " << sizeof(d1) << "\n";
159 std::cout << "365 days after " << d2 << " is " << d2 + 365 << "\n";
162 std::cout << "365 days was converted to " << d3 << "\n";
163 std::cout << "Added to the date you entered: " << d2 + d3 << "\n";
165 std::cout << d2 << " == " << d1 << " is " << (d2 == d1) << "\n";
166 std::cout << d2 << " != " << d1 << " is " << (d2 != d1) << "\n";
167 std::cout << d2 << " >= " << d1 << " is " << (d2 >= d1) << "\n";
168 std::cout << d2 << " <= " << d1 << " is " << (d2 <= d1) << "\n";
169 std::cout << d2 << " > " << d1 << " is " << (d2 > d1) << "\n";
170 std::cout << d2 << " < " << d1 << " is " << (d2 < d1) << "\n";
172 std::cout << "difference is " << d2 - d1 << " days.\n\n";
174 std::cout << "***********************\nTime Test\n*********************\n";
178 std::cout << "Default constructor: " << t1 << "\n";
179 t1 = hour(10, 50, 30);
180 std::cout << "With 10,50,30: " << t1 << "\n";
181 std::cout << "Enter a time: \n";
183 std::cin >> datestring;
184 t2 = hour(datestring);
186 std::cout << datestring << " parses into (HH:MM:SS): " << t2 << "\n";
188 std::cout << "t1 + t2 = " << t1 + t2 << "\n";
189 std::cout << "t1 - t2 = " << t1 - t2 << "\n";
190 std::cout << "t2 - t1 = " << t2 - t1 << "\n";
195 std::cout << "\nThe time now is " << d1 << " " << t1 << "\n";