blob: 99d54d87d946a2bf41e9a57872a79d7f54aa00d2 [file] [log] [blame]
/*
* Copyright 2013 ZXing authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#import "ZXPDF417DetectorTest.h"
const int BIT_SET_INDEX_LEN = 4;
const int BIT_SET_INDEX[BIT_SET_INDEX_LEN] = { 1, 2, 3, 5 };
const int BIT_MATRIX_POINTS_LEN = 6;
const int BIT_MATRIX_POINTS[BIT_MATRIX_POINTS_LEN] = { 1, 2, 2, 0, 3, 1 };
@implementation ZXPDF417DetectorTest
- (void)testMirror {
[self testMirror:7];
[self testMirror:8];
}
- (void)testMirror:(int)size {
ZXBitArray *result = [[ZXBitArray alloc] initWithSize:size];
[ZXPDF417Detector mirror:[self input:size] result:result];
ZXBitArray *expected = [self expected:size];
STAssertEqualObjects([result description], [expected description], @"Expected %@, got %@", expected, result);
}
- (void)testRotate180 {
[self testRotate180:7 height:4];
[self testRotate180:7 height:5];
[self testRotate180:8 height:4];
[self testRotate180:8 height:5];
}
- (void)testRotate180:(int)width height:(int)height {
ZXBitMatrix *input = [self input:width height:height];
[ZXPDF417Detector rotate180:input];
ZXBitMatrix *expected = [self expected:width height:height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
STAssertEquals([input getX:x y:y], [expected getX:x y:y], @"(%d,%d)", x, y);
}
}
}
- (ZXBitMatrix *)expected:(int)width height:(int)height {
ZXBitMatrix *result = [[ZXBitMatrix alloc] initWithWidth:width height:height];
for (int i = 0; i < BIT_MATRIX_POINTS_LEN; i += 2) {
[result setX:width - 1 - BIT_MATRIX_POINTS[i] y:height - 1 - BIT_MATRIX_POINTS[i + 1]];
}
return result;
}
- (ZXBitMatrix *)input:(int)width height:(int)height {
ZXBitMatrix *result = [[ZXBitMatrix alloc] initWithWidth:width height:height];
for (int i = 0; i < BIT_MATRIX_POINTS_LEN; i += 2) {
[result setX:BIT_MATRIX_POINTS[i] y:BIT_MATRIX_POINTS[i + 1]];
}
return result;
}
- (ZXBitArray *)expected:(int)size {
ZXBitArray *expected = [[ZXBitArray alloc] initWithSize:size];
for (int i = 0; i < BIT_SET_INDEX_LEN; i++) {
int index = BIT_SET_INDEX[i];
[expected set:size - 1 - index];
}
return expected;
}
- (ZXBitArray *)input:(int)size {
ZXBitArray *input = [[ZXBitArray alloc] initWithSize:size];
for (int i = 0; i < BIT_SET_INDEX_LEN; i++) {
int index = BIT_SET_INDEX[i];
[input set:index];
}
return input;
}
@end