aboutsummaryrefslogtreecommitdiff
path: root/src/unit/blob.unit
blob: 645052b420398897698dc45e7b4b18bb9b3c0102 (plain)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// vim: syntax=cpp
/*
 * Copyright (C) 2007-2019 Xagasoft, All rights reserved.
 *
 * This file is part of the libbu++ library and is released under the
 * terms of the license contained in the file LICENSE.
 */

#include "bu/blob.h"
#include "bu/exceptionindexoutofbounds.h"
#include "bu/sio.h"

#include <string.h>

suite Blob
{
    test set
    {
        Bu::Blob a("hello there");
        unitTest( !strcmp( a.getData(), "hello there") );
        Bu::Blob b( a );
        a = "New string";
        unitTest( !strcmp( a.getData(), "New string") );
        unitTest( !strcmp( b.getData(), "hello there") );
        b = a;
        unitTest( !strcmp( b.getData(), "New string") );
    }

    test index
    {
        Bu::Blob a("hello there");
        unitTest( a[5] == ' ' );
        unitTest( a[6] == 't' );
        unitTestCatch( a[-1], Bu::ExceptionIndexOutOfBounds );
        unitTestCatch( a[-100], Bu::ExceptionIndexOutOfBounds );
        unitTest( a[10] == 'e' );
        unitTestCatch( a[11], Bu::ExceptionIndexOutOfBounds );
        unitTestCatch( a[12], Bu::ExceptionIndexOutOfBounds );
    }

    test compare
    {
        Bu::Blob a("cat"), b("dog"), c("cattail"), d("dog");

        unitTest( a != b );
        unitTest( a != c );
        unitTest( a != "catt" );
        unitTest( a != "ca" );
        unitTest( !(a == c) );
        unitTest( !(a == d) );
        unitTest( a == a );
        unitTest( !(a != a) );
        unitTest( !(b != d) );

        unitTest( a < b );
        unitTest( a <= b );
        unitTest( a < c );
        unitTest( a <= c );
        unitTest( !(b < d) );
        unitTest( b <= d );
        unitTest( !(c < a) );
        
        unitTest( a < "dog" );
        unitTest( a <= "dog" );
        unitTest( a < "cattail" );
        unitTest( a <= "cattail" );
        unitTest( !(b < "dog") );
        unitTest( b <= "dog" );
        unitTest( !(c < "cattail") );

        unitTest( b > a );
        unitTest( b >= a );
        unitTest( c > a );
        unitTest( c >= a );
        unitTest( !(d > b) );
        unitTest( d <= b );
        unitTest( !(a > c) );
        
        unitTest( b > "cat" );
        unitTest( b >= "cat" );
        unitTest( c > "cat" );
        unitTest( c >= "cat" );
        unitTest( !(d > "dog") );
        unitTest( d <= "dog" );
        unitTest( !(a > "cattail") );
    }

    test iterator
    {
    }

    test const_iterator
    {
    }

    test sort
    {
        Bu::List<Bu::Blob> lList;
        lList.append("Moose");
        lList.append("Cattail");
        lList.append("Cat");
        lList.append("Cattxil");
        lList.append("Moo");
        lList.append("Cattails");
        lList.append("Dog");

        lList.sort();

        Bu::List<Bu::Blob>::iterator i = lList.begin();
        unitTest( *i == "Cat" && i++ );
        unitTest( *i == "Cattail" && i++ );
        unitTest( *i == "Cattails" && i++ );
        unitTest( *i == "Cattxil" && i++ );
        unitTest( *i == "Dog" && i++ );
        unitTest( *i == "Moo" && i++ );
        unitTest( *i == "Moose" && !(i++) );
    }
}