File: testunpack.cpp

package info (click to toggle)
libopenraw 0.0.8-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 2,964 kB
  • ctags: 1,936
  • sloc: sh: 10,199; cpp: 9,279; ansic: 1,466; makefile: 544; xml: 465; perl: 42
file content (78 lines) | stat: -rw-r--r-- 2,444 bytes parent folder | download | duplicates (4)
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
/* -*- tab-width:4; indent-tabs-mode:'t c-file-style:"stroustrup" -*- */
/*
 * Copyright (C) 2008 Novell, Inc.
 * Copyright (C) 2009 Hubert Figuiere
 *
 * This library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 3 of
 * the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library.  If not, see
 * <http://www.gnu.org/licenses/>.
 */


#include <boost/test/minimal.hpp>

#include "unpack.h"
#include "ifd.h"


int test_unpack()
{
	const uint8_t packed[32] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF,
								0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0x00,
								0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF,
								0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0x00};
	uint16_t unpacked[20];

	OpenRaw::Internals::Unpack
		unpack(32, OpenRaw::Internals::IFD::COMPRESS_NIKON_PACK);

	size_t s = unpack.unpack_be12to16((uint8_t*)unpacked, packed,
									  sizeof(packed));
	BOOST_CHECK(s = size_t(sizeof(unpacked)));
	for (size_t i = 0; i < 2; ++i) {
		BOOST_CHECK(unpacked[10 * i + 0] == 0x0123);
		BOOST_CHECK(unpacked[10 * i + 1] == 0x0456);
		BOOST_CHECK(unpacked[10 * i + 2] == 0x0789);
		BOOST_CHECK(unpacked[10 * i + 3] == 0x00AB);
		BOOST_CHECK(unpacked[10 * i + 4] == 0x0CDE);
		BOOST_CHECK(unpacked[10 * i + 5] == 0x0F12);
		BOOST_CHECK(unpacked[10 * i + 6] == 0x0345);
		BOOST_CHECK(unpacked[10 * i + 7] == 0x0678);
		BOOST_CHECK(unpacked[10 * i + 8] == 0x090A);
		BOOST_CHECK(unpacked[10 * i + 9] == 0x0BCD);
	}
	return 0;
}

int test_unpack2()
{
	const uint8_t packed[3] = {0x12, 0x34, 0x56};
	uint16_t unpacked[2];

	OpenRaw::Internals::Unpack unpack(32,
									  OpenRaw::Internals::IFD::COMPRESS_NONE);

	size_t s = unpack.unpack_be12to16((uint8_t*)unpacked, packed,
									  sizeof(packed));
	BOOST_CHECK(s == size_t(sizeof(unpacked)));
	BOOST_CHECK(unpacked[0] == 0x0123);
	BOOST_CHECK(unpacked[1] == 0x0456);
	return 0;
}

int test_main( int /*argc*/, char * /*argv*/[] ) 
{
	test_unpack();
	test_unpack2();
	return 0;
}