summaryrefslogtreecommitdiff
path: root/tikzit/src/common/test/test.m
blob: 5e05c6e30670695323dd77fb235162f069ff3bbb (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
//
//  test.m
//  TikZiT
//  
//  Copyright 2010 Aleks Kissinger. All rights reserved.
//  
//  
//  This file is part of TikZiT.
//  
//  TikZiT is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//  
//  TikZiT is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  
//  You should have received a copy of the GNU General Public License
//  along with TikZiT.  If not, see <http://www.gnu.org/licenses/>.
//  
#import "test/test.h"

static int PASSES;
static int FAILS;

static int ALLOC_INSTANCES = 0;

static BOOL colorEnabled = YES;
static int depth = 0;

static NSString *RED, *GREEN, *BLUE, *OFF;

static NSString *indents[6] =
	{@"", @"  ", @"    ", @"      ",
	 @"        ", @"          "};

#define INDENT ((depth >= 6) ? indents[5] : indents[depth])


@implementation Allocator

+ (id)alloc {
	++ALLOC_INSTANCES;
	return [super alloc];
}

- (void)dealloc {
	--ALLOC_INSTANCES;
	[super dealloc];
}

+ (Allocator*)allocator {
	return [[[Allocator alloc] init] autorelease];
}

@end

void TEST(NSString *msg, BOOL test) {
	if (test) {
		PUTS(@"%@[%@PASS%@] %@", INDENT, GREEN, OFF, msg);
		++PASSES;
	} else {
		PUTS(@"%@[%@FAIL%@] %@", INDENT, RED, OFF, msg);
		++FAILS;
	}
}

void startTests() {
	PASSES = 0;
	FAILS = 0;
}

void endTests() {
	PUTS(@"Done testing. %@%d%@ passed, %@%d%@ failed.",
			  GREEN, PASSES, OFF,
			  RED, FAILS, OFF);
}

void startTestBlock(NSString *name) {
	PUTS(@"%@Starting %@%@%@ tests.", INDENT, BLUE, name, OFF);
	++depth;
}

void endTestBlock(NSString *name) {
	--depth;
	PUTS(@"%@Done with %@%@%@ tests.", INDENT, BLUE, name, OFF);
}

void setColorEnabled(BOOL b) {
	colorEnabled = b;
	if (b) {
		RED = @"\033[31;1m";
		GREEN = @"\033[32;1m";
		BLUE = @"\033[36;1m";
		OFF = @"\033[0m";
	} else {
		RED = @"";
		GREEN = @"";
		BLUE = @"";
		OFF = @"";
	}
}