Mock tests for clusters on Android x86
diff --git a/test/mock/alldocube-iwork8.cc b/test/mock/alldocube-iwork8.cc
index 6f25ca8..8664f3a 100644
--- a/test/mock/alldocube-iwork8.cc
+++ b/test/mock/alldocube-iwork8.cc
@@ -24,6 +24,12 @@
 	}
 }
 
+TEST(PROCESSORS, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_processor(i)->cluster);
+	}
+}
+
 TEST(PROCESSORS, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
@@ -92,6 +98,12 @@
 	}
 }
 
+TEST(CORES, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_core(i)->cluster);
+	}
+}
+
 TEST(CORES, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
@@ -122,10 +134,82 @@
 	}
 }
 
+TEST(CLUSTERS, count) {
+	ASSERT_EQ(2, cpuinfo_get_clusters_count());
+}
+
+TEST(CLUSTERS, non_null) {
+	ASSERT_TRUE(cpuinfo_get_clusters());
+}
+
+TEST(CLUSTERS, processor_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->processor_start);
+	}
+}
+
+TEST(CLUSTERS, processor_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->processor_count);
+	}
+}
+
+TEST(CLUSTERS, core_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->core_start);
+	}
+}
+
+TEST(CLUSTERS, core_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->core_count);
+	}
+}
+
+TEST(CLUSTERS, cluster_id) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
+	}
+}
+
+TEST(CLUSTERS, package) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
+	}
+}
+
+TEST(CLUSTERS, vendor) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_vendor_intel, cpuinfo_get_cluster(i)->vendor);
+	}
+}
+
+TEST(CLUSTERS, uarch) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_uarch_airmont, cpuinfo_get_cluster(i)->uarch);
+	}
+}
+
+TEST(CLUSTERS, cpuid) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT32_C(0x000406C4), cpuinfo_get_cluster(i)->cpuid);
+	}
+}
+
+TEST(CLUSTERS, DISABLED_frequency) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT64_C(1920000000), cpuinfo_get_cluster(i)->frequency);
+	}
+}
+
 TEST(PACKAGES, count) {
 	ASSERT_EQ(1, cpuinfo_get_packages_count());
 }
 
+TEST(PACKAGES, non_null) {
+	ASSERT_TRUE(cpuinfo_get_packages());
+}
+
 TEST(PACKAGES, name) {
 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
 		ASSERT_EQ("Intel Atom x5-Z8350",
@@ -166,6 +250,18 @@
 	}
 }
 
+TEST(PACKAGES, cluster_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
+	}
+}
+
+TEST(PACKAGES, cluster_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
+	}
+}
+
 TEST(ISA, rdtsc) {
 	ASSERT_TRUE(cpuinfo_has_x86_rdtsc());
 }
diff --git a/test/mock/memo-pad-7.cc b/test/mock/memo-pad-7.cc
index 897b7ac..2cef20b 100644
--- a/test/mock/memo-pad-7.cc
+++ b/test/mock/memo-pad-7.cc
@@ -24,6 +24,12 @@
 	}
 }
 
+TEST(PROCESSORS, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_processor(i)->cluster);
+	}
+}
+
 TEST(PROCESSORS, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
@@ -92,6 +98,12 @@
 	}
 }
 
+TEST(CORES, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_core(i)->cluster);
+	}
+}
+
 TEST(CORES, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
@@ -122,10 +134,82 @@
 	}
 }
 
+TEST(CLUSTERS, count) {
+	ASSERT_EQ(2, cpuinfo_get_clusters_count());
+}
+
+TEST(CLUSTERS, non_null) {
+	ASSERT_TRUE(cpuinfo_get_clusters());
+}
+
+TEST(CLUSTERS, processor_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->processor_start);
+	}
+}
+
+TEST(CLUSTERS, processor_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->processor_count);
+	}
+}
+
+TEST(CLUSTERS, core_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->core_start);
+	}
+}
+
+TEST(CLUSTERS, core_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->core_count);
+	}
+}
+
+TEST(CLUSTERS, cluster_id) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
+	}
+}
+
+TEST(CLUSTERS, package) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
+	}
+}
+
+TEST(CLUSTERS, vendor) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_vendor_intel, cpuinfo_get_cluster(i)->vendor);
+	}
+}
+
+TEST(CLUSTERS, uarch) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_uarch_silvermont, cpuinfo_get_cluster(i)->uarch);
+	}
+}
+
+TEST(CLUSTERS, cpuid) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT32_C(0x00030678), cpuinfo_get_cluster(i)->cpuid);
+	}
+}
+
+TEST(CLUSTERS, DISABLED_frequency) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT64_C(1862000000), cpuinfo_get_cluster(i)->frequency);
+	}
+}
+
 TEST(PACKAGES, count) {
 	ASSERT_EQ(1, cpuinfo_get_packages_count());
 }
 
+TEST(PACKAGES, non_null) {
+	ASSERT_TRUE(cpuinfo_get_packages());
+}
+
 TEST(PACKAGES, name) {
 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
 		ASSERT_EQ("Intel Atom Z3745",
@@ -166,6 +250,18 @@
 	}
 }
 
+TEST(PACKAGES, cluster_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
+	}
+}
+
+TEST(PACKAGES, cluster_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
+	}
+}
+
 TEST(ISA, rdtsc) {
 	ASSERT_TRUE(cpuinfo_has_x86_rdtsc());
 }
diff --git a/test/mock/zenfone-2.cc b/test/mock/zenfone-2.cc
index 5e8ae85..53c5ef6 100644
--- a/test/mock/zenfone-2.cc
+++ b/test/mock/zenfone-2.cc
@@ -24,6 +24,12 @@
 	}
 }
 
+TEST(PROCESSORS, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_processor(i)->cluster);
+	}
+}
+
 TEST(PROCESSORS, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
@@ -92,6 +98,12 @@
 	}
 }
 
+TEST(CORES, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_core(i)->cluster);
+	}
+}
+
 TEST(CORES, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
@@ -122,10 +134,82 @@
 	}
 }
 
+TEST(CLUSTERS, count) {
+	ASSERT_EQ(2, cpuinfo_get_clusters_count());
+}
+
+TEST(CLUSTERS, non_null) {
+	ASSERT_TRUE(cpuinfo_get_clusters());
+}
+
+TEST(CLUSTERS, processor_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->processor_start);
+	}
+}
+
+TEST(CLUSTERS, processor_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->processor_count);
+	}
+}
+
+TEST(CLUSTERS, core_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->core_start);
+	}
+}
+
+TEST(CLUSTERS, core_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->core_count);
+	}
+}
+
+TEST(CLUSTERS, cluster_id) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
+	}
+}
+
+TEST(CLUSTERS, package) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
+	}
+}
+
+TEST(CLUSTERS, vendor) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_vendor_intel, cpuinfo_get_cluster(i)->vendor);
+	}
+}
+
+TEST(CLUSTERS, uarch) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_uarch_silvermont, cpuinfo_get_cluster(i)->uarch);
+	}
+}
+
+TEST(CLUSTERS, cpuid) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT32_C(0x000506A0), cpuinfo_get_cluster(i)->cpuid);
+	}
+}
+
+TEST(CLUSTERS, DISABLED_frequency) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT64_C(2333000000), cpuinfo_get_cluster(i)->frequency);
+	}
+}
+
 TEST(PACKAGES, count) {
 	ASSERT_EQ(1, cpuinfo_get_packages_count());
 }
 
+TEST(PACKAGES, non_null) {
+	ASSERT_TRUE(cpuinfo_get_packages());
+}
+
 TEST(PACKAGES, name) {
 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
 		ASSERT_EQ("Intel Atom Z3580",
@@ -166,6 +250,18 @@
 	}
 }
 
+TEST(PACKAGES, cluster_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
+	}
+}
+
+TEST(PACKAGES, cluster_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
+	}
+}
+
 TEST(ISA, rdtsc) {
 	ASSERT_TRUE(cpuinfo_has_x86_rdtsc());
 }
diff --git a/test/mock/zenfone-2e.cc b/test/mock/zenfone-2e.cc
index 832e751..decd278 100644
--- a/test/mock/zenfone-2e.cc
+++ b/test/mock/zenfone-2e.cc
@@ -24,6 +24,12 @@
 	}
 }
 
+TEST(PROCESSORS, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_processor(i)->cluster);
+	}
+}
+
 TEST(PROCESSORS, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
@@ -92,6 +98,12 @@
 	}
 }
 
+TEST(CORES, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i), cpuinfo_get_core(i)->cluster);
+	}
+}
+
 TEST(CORES, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
@@ -122,10 +134,82 @@
 	}
 }
 
+TEST(CLUSTERS, count) {
+	ASSERT_EQ(2, cpuinfo_get_clusters_count());
+}
+
+TEST(CLUSTERS, non_null) {
+	ASSERT_TRUE(cpuinfo_get_clusters());
+}
+
+TEST(CLUSTERS, processor_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->processor_start);
+	}
+}
+
+TEST(CLUSTERS, processor_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->processor_count);
+	}
+}
+
+TEST(CLUSTERS, core_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->core_start);
+	}
+}
+
+TEST(CLUSTERS, core_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(1, cpuinfo_get_cluster(i)->core_count);
+	}
+}
+
+TEST(CLUSTERS, cluster_id) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
+	}
+}
+
+TEST(CLUSTERS, package) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
+	}
+}
+
+TEST(CLUSTERS, vendor) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_vendor_intel, cpuinfo_get_cluster(i)->vendor);
+	}
+}
+
+TEST(CLUSTERS, uarch) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_uarch_saltwell, cpuinfo_get_cluster(i)->uarch);
+	}
+}
+
+TEST(CLUSTERS, cpuid) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT32_C(0x00030651), cpuinfo_get_cluster(i)->cpuid);
+	}
+}
+
+TEST(CLUSTERS, DISABLED_frequency) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT64_C(1600000000), cpuinfo_get_cluster(i)->frequency);
+	}
+}
+
 TEST(PACKAGES, count) {
 	ASSERT_EQ(1, cpuinfo_get_packages_count());
 }
 
+TEST(PACKAGES, non_null) {
+	ASSERT_TRUE(cpuinfo_get_packages());
+}
+
 TEST(PACKAGES, name) {
 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
 		ASSERT_EQ("Intel Atom Z2560",
@@ -166,6 +250,18 @@
 	}
 }
 
+TEST(PACKAGES, cluster_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
+	}
+}
+
+TEST(PACKAGES, cluster_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
+	}
+}
+
 TEST(ISA, rdtsc) {
 	ASSERT_TRUE(cpuinfo_has_x86_rdtsc());
 }
diff --git a/test/mock/zenfone-c.cc b/test/mock/zenfone-c.cc
index 6fac643..9a21e42 100644
--- a/test/mock/zenfone-c.cc
+++ b/test/mock/zenfone-c.cc
@@ -24,6 +24,12 @@
 	}
 }
 
+TEST(PROCESSORS, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i / 2), cpuinfo_get_processor(i)->cluster);
+	}
+}
+
 TEST(PROCESSORS, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
@@ -92,6 +98,12 @@
 	}
 }
 
+TEST(CORES, cluster) {
+	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_cluster(i), cpuinfo_get_core(i)->cluster);
+	}
+}
+
 TEST(CORES, package) {
 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
@@ -122,10 +134,82 @@
 	}
 }
 
+TEST(CLUSTERS, count) {
+	ASSERT_EQ(2, cpuinfo_get_clusters_count());
+}
+
+TEST(CLUSTERS, non_null) {
+	ASSERT_TRUE(cpuinfo_get_clusters());
+}
+
+TEST(CLUSTERS, processor_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i * 2, cpuinfo_get_cluster(i)->processor_start);
+	}
+}
+
+TEST(CLUSTERS, processor_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_cluster(i)->processor_count);
+	}
+}
+
+TEST(CLUSTERS, core_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->core_start);
+	}
+}
+
+TEST(CLUSTERS, core_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(1, cpuinfo_get_cluster(i)->core_count);
+	}
+}
+
+TEST(CLUSTERS, cluster_id) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
+	}
+}
+
+TEST(CLUSTERS, package) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
+	}
+}
+
+TEST(CLUSTERS, vendor) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_vendor_intel, cpuinfo_get_cluster(i)->vendor);
+	}
+}
+
+TEST(CLUSTERS, uarch) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(cpuinfo_uarch_saltwell, cpuinfo_get_cluster(i)->uarch);
+	}
+}
+
+TEST(CLUSTERS, cpuid) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT32_C(0x00030651), cpuinfo_get_cluster(i)->cpuid);
+	}
+}
+
+TEST(CLUSTERS, DISABLED_frequency) {
+	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
+		ASSERT_EQ(UINT64_C(1200000000), cpuinfo_get_cluster(i)->frequency);
+	}
+}
+
 TEST(PACKAGES, count) {
 	ASSERT_EQ(1, cpuinfo_get_packages_count());
 }
 
+TEST(PACKAGES, non_null) {
+	ASSERT_TRUE(cpuinfo_get_packages());
+}
+
 TEST(PACKAGES, name) {
 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
 		ASSERT_EQ("Intel Atom Z2520",
@@ -166,6 +250,18 @@
 	}
 }
 
+TEST(PACKAGES, cluster_start) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
+	}
+}
+
+TEST(PACKAGES, cluster_count) {
+	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
+		ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
+	}
+}
+
 TEST(ISA, rdtsc) {
 	ASSERT_TRUE(cpuinfo_has_x86_rdtsc());
 }