summaryrefslogtreecommitdiff
path: root/test/TestMask.cc
blob: 1e271cece8fdd22b169a9e6a665e770f0edd75f3 (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

#include <gtest/gtest.h>
#include <mr_mask.h>

TEST(TestMask, TestPopcnt)
{
	mask_t test_mask_0 = 0;
	EXPECT_EQ(mask_popcnt(test_mask_0), 0);

	mask_t test_mask_1 = 0xAA;
	EXPECT_EQ(mask_popcnt(test_mask_1), 4);

	mask_t test_mask_2 = 0xffffffff;
	EXPECT_EQ(mask_popcnt(test_mask_2), 32);

	mask_t test_mask_3 = 0xffffffffffffffff;
	EXPECT_EQ(mask_popcnt(test_mask_3), 64);
}


TEST(TestMask, TestLocation)
{
	mask_t test_mask_0 = 0;
	EXPECT_EQ(mask_location(test_mask_0, 0), -1);

	mask_t test_mask_1 = 0x88;
	EXPECT_EQ(mask_location(test_mask_1, 0), 3);
	EXPECT_EQ(mask_location(test_mask_1, 1), 7);
	EXPECT_EQ(mask_location(test_mask_1, 2), -1);

	mask_t test_mask_2 = 0xffffffffffffffff;
	for(unsigned id = 0; id < sizeof(mask_t) * 8; id++)
		EXPECT_EQ(mask_location(test_mask_2, id), id);
}