File: test_chroma_filter.cpp

package info (click to toggle)
chromaprint 0.6-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,312 kB
  • sloc: cpp: 5,218; ansic: 632; python: 164; sh: 79; makefile: 14
file content (74 lines) | stat: -rw-r--r-- 2,567 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
#include <gtest/gtest.h>
#include "image.h"
#include "image_builder.h"
#include "chroma_filter.h"

using namespace std;
using namespace Chromaprint;

TEST(ChromaFilter, Blur2) {
	double coefficients[] = { 0.5, 0.5 };
	Image image(12);
	ImageBuilder builder(&image);
	ChromaFilter filter(coefficients, 2, &builder);
	double d1[] = { 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d2[] = { 1.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d3[] = { 2.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	std::vector<double> v1(d1, d1 + 12);
	std::vector<double> v2(d2, d2 + 12);
	std::vector<double> v3(d3, d3 + 12);
	filter.Consume(v1);
	filter.Consume(v2);
	filter.Consume(v3);
	ASSERT_EQ(2, image.NumRows());
	EXPECT_EQ(0.5, image[0][0]);
	EXPECT_EQ(1.5, image[1][0]);
	EXPECT_EQ(5.5, image[0][1]);
	EXPECT_EQ(6.5, image[1][1]);
}

TEST(ChromaFilter, Blur3) {
	double coefficients[] = { 0.5, 0.7, 0.5 };
	Image image(12);
	ImageBuilder builder(&image);
	ChromaFilter filter(coefficients, 3, &builder);
	double d1[] = { 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d2[] = { 1.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d3[] = { 2.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d4[] = { 3.0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	std::vector<double> v1(d1, d1 + 12);
	std::vector<double> v2(d2, d2 + 12);
	std::vector<double> v3(d3, d3 + 12);
	std::vector<double> v4(d4, d4 + 12);
	filter.Consume(v1);
	filter.Consume(v2);
	filter.Consume(v3);
	filter.Consume(v4);
	ASSERT_EQ(2, image.NumRows());
	EXPECT_FLOAT_EQ(1.7, image[0][0]);
	EXPECT_FLOAT_EQ(3.399999999999999, image[1][0]);
	EXPECT_FLOAT_EQ(10.199999999999999, image[0][1]);
	EXPECT_FLOAT_EQ(11.899999999999999, image[1][1]);
}

TEST(ChromaFilter, Diff) {
	double coefficients[] = { 1.0, -1.0 };
	Image image(12);
	ImageBuilder builder(&image);
	ChromaFilter filter(coefficients, 2, &builder);
	double d1[] = { 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d2[] = { 1.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	double d3[] = { 2.0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
	std::vector<double> v1(d1, d1 + 12);
	std::vector<double> v2(d2, d2 + 12);
	std::vector<double> v3(d3, d3 + 12);
	filter.Consume(v1);
	filter.Consume(v2);
	filter.Consume(v3);
	ASSERT_EQ(2, image.NumRows());
	EXPECT_EQ(-1.0, image[0][0]);
	EXPECT_EQ(-1.0, image[1][0]);
	EXPECT_EQ(-1.0, image[0][1]);
	EXPECT_EQ(-1.0, image[1][1]);
}