• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <gtest/gtest.h>
2 
3 #include <cpuinfo-mock.h>
4 #include <cpuinfo.h>
5 
TEST(PROCESSORS,count)6 TEST(PROCESSORS, count) {
7 	ASSERT_EQ(8, cpuinfo_get_processors_count());
8 }
9 
TEST(PROCESSORS,non_null)10 TEST(PROCESSORS, non_null) {
11 	ASSERT_TRUE(cpuinfo_get_processors());
12 }
13 
TEST(PROCESSORS,smt_id)14 TEST(PROCESSORS, smt_id) {
15 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
16 		ASSERT_EQ(0, cpuinfo_get_processor(i)->smt_id);
17 	}
18 }
19 
TEST(PROCESSORS,core)20 TEST(PROCESSORS, core) {
21 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
22 		ASSERT_EQ(cpuinfo_get_core(i), cpuinfo_get_processor(i)->core);
23 	}
24 }
25 
TEST(PROCESSORS,cluster)26 TEST(PROCESSORS, cluster) {
27 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
28 		switch (i) {
29 			case 0:
30 			case 1:
31 			case 2:
32 			case 3:
33 				ASSERT_EQ(cpuinfo_get_cluster(0), cpuinfo_get_processor(i)->cluster);
34 				break;
35 			case 4:
36 			case 5:
37 			case 6:
38 			case 7:
39 				ASSERT_EQ(cpuinfo_get_cluster(1), cpuinfo_get_processor(i)->cluster);
40 				break;
41 		}
42 	}
43 }
44 
TEST(PROCESSORS,package)45 TEST(PROCESSORS, package) {
46 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
47 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_processor(i)->package);
48 	}
49 }
50 
TEST(PROCESSORS,DISABLED_linux_id)51 TEST(PROCESSORS, DISABLED_linux_id) {
52 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
53 		switch (i) {
54 			case 0:
55 			case 1:
56 			case 2:
57 			case 3:
58 				ASSERT_EQ(i, cpuinfo_get_processor(i)->linux_id);
59 				break;
60 			case 4:
61 			case 5:
62 			case 6:
63 			case 7:
64 				ASSERT_EQ(i, cpuinfo_get_processor(i)->linux_id);
65 				break;
66 		}
67 	}
68 }
69 
TEST(PROCESSORS,l1i)70 TEST(PROCESSORS, l1i) {
71 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
72 		ASSERT_EQ(cpuinfo_get_l1i_cache(i), cpuinfo_get_processor(i)->cache.l1i);
73 	}
74 }
75 
TEST(PROCESSORS,l1d)76 TEST(PROCESSORS, l1d) {
77 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
78 		ASSERT_EQ(cpuinfo_get_l1d_cache(i), cpuinfo_get_processor(i)->cache.l1d);
79 	}
80 }
81 
TEST(PROCESSORS,l2)82 TEST(PROCESSORS, l2) {
83 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
84 		switch (i) {
85 			case 0:
86 			case 1:
87 			case 2:
88 			case 3:
89 				ASSERT_EQ(cpuinfo_get_l2_cache(0), cpuinfo_get_processor(i)->cache.l2);
90 				break;
91 			case 4:
92 			case 5:
93 			case 6:
94 			case 7:
95 				ASSERT_EQ(cpuinfo_get_l2_cache(1), cpuinfo_get_processor(i)->cache.l2);
96 				break;
97 		}
98 	}
99 }
100 
TEST(PROCESSORS,l3)101 TEST(PROCESSORS, l3) {
102 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
103 		ASSERT_FALSE(cpuinfo_get_processor(i)->cache.l3);
104 	}
105 }
106 
TEST(PROCESSORS,l4)107 TEST(PROCESSORS, l4) {
108 	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
109 		ASSERT_FALSE(cpuinfo_get_processor(i)->cache.l4);
110 	}
111 }
112 
TEST(CORES,count)113 TEST(CORES, count) {
114 	ASSERT_EQ(8, cpuinfo_get_cores_count());
115 }
116 
TEST(CORES,non_null)117 TEST(CORES, non_null) {
118 	ASSERT_TRUE(cpuinfo_get_cores());
119 }
120 
TEST(CORES,processor_start)121 TEST(CORES, processor_start) {
122 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
123 		ASSERT_EQ(i, cpuinfo_get_core(i)->processor_start);
124 	}
125 }
126 
TEST(CORES,processor_count)127 TEST(CORES, processor_count) {
128 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
129 		ASSERT_EQ(1, cpuinfo_get_core(i)->processor_count);
130 	}
131 }
132 
TEST(CORES,core_id)133 TEST(CORES, core_id) {
134 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
135 		ASSERT_EQ(i, cpuinfo_get_core(i)->core_id);
136 	}
137 }
138 
TEST(CORES,cluster)139 TEST(CORES, cluster) {
140 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
141 		switch (i) {
142 			case 0:
143 			case 1:
144 			case 2:
145 			case 3:
146 				ASSERT_EQ(cpuinfo_get_cluster(0), cpuinfo_get_core(i)->cluster);
147 				break;
148 			case 4:
149 			case 5:
150 			case 6:
151 			case 7:
152 				ASSERT_EQ(cpuinfo_get_cluster(1), cpuinfo_get_core(i)->cluster);
153 				break;
154 		}
155 	}
156 }
157 
TEST(CORES,package)158 TEST(CORES, package) {
159 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
160 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_core(i)->package);
161 	}
162 }
163 
TEST(CORES,vendor)164 TEST(CORES, vendor) {
165 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
166 		ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_core(i)->vendor);
167 	}
168 }
169 
TEST(CORES,uarch)170 TEST(CORES, uarch) {
171 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
172 		ASSERT_EQ(cpuinfo_uarch_cortex_a53, cpuinfo_get_core(i)->uarch);
173 	}
174 }
175 
TEST(CORES,midr)176 TEST(CORES, midr) {
177 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
178 		ASSERT_EQ(UINT32_C(0x410FD034), cpuinfo_get_core(i)->midr);
179 	}
180 }
181 
TEST(CORES,DISABLED_frequency)182 TEST(CORES, DISABLED_frequency) {
183 	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
184 		switch (i) {
185 			case 0:
186 			case 1:
187 			case 2:
188 			case 3:
189 				ASSERT_EQ(UINT64_C(1401000000), cpuinfo_get_core(i)->frequency);
190 				break;
191 			case 4:
192 			case 5:
193 			case 6:
194 			case 7:
195 				ASSERT_EQ(UINT64_C(1094400000), cpuinfo_get_core(i)->frequency);
196 				break;
197 		}
198 	}
199 }
200 
TEST(CLUSTERS,count)201 TEST(CLUSTERS, count) {
202 	ASSERT_EQ(2, cpuinfo_get_clusters_count());
203 }
204 
TEST(CLUSTERS,non_null)205 TEST(CLUSTERS, non_null) {
206 	ASSERT_TRUE(cpuinfo_get_clusters());
207 }
208 
TEST(CLUSTERS,processor_start)209 TEST(CLUSTERS, processor_start) {
210 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
211 		switch (i) {
212 			case 0:
213 				ASSERT_EQ(0, cpuinfo_get_cluster(i)->processor_start);
214 				break;
215 			case 1:
216 				ASSERT_EQ(4, cpuinfo_get_cluster(i)->processor_start);
217 				break;
218 		}
219 	}
220 }
221 
TEST(CLUSTERS,processor_count)222 TEST(CLUSTERS, processor_count) {
223 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
224 		ASSERT_EQ(4, cpuinfo_get_cluster(i)->processor_count);
225 	}
226 }
227 
TEST(CLUSTERS,core_start)228 TEST(CLUSTERS, core_start) {
229 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
230 		switch (i) {
231 			case 0:
232 				ASSERT_EQ(0, cpuinfo_get_cluster(i)->core_start);
233 				break;
234 			case 1:
235 				ASSERT_EQ(4, cpuinfo_get_cluster(i)->core_start);
236 				break;
237 		}
238 	}
239 }
240 
TEST(CLUSTERS,core_count)241 TEST(CLUSTERS, core_count) {
242 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
243 		ASSERT_EQ(4, cpuinfo_get_cluster(i)->core_count);
244 	}
245 }
246 
TEST(CLUSTERS,cluster_id)247 TEST(CLUSTERS, cluster_id) {
248 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
249 		ASSERT_EQ(i, cpuinfo_get_cluster(i)->cluster_id);
250 	}
251 }
252 
TEST(CLUSTERS,package)253 TEST(CLUSTERS, package) {
254 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
255 		ASSERT_EQ(cpuinfo_get_package(0), cpuinfo_get_cluster(i)->package);
256 	}
257 }
258 
TEST(CLUSTERS,vendor)259 TEST(CLUSTERS, vendor) {
260 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
261 		ASSERT_EQ(cpuinfo_vendor_arm, cpuinfo_get_cluster(i)->vendor);
262 	}
263 }
264 
TEST(CLUSTERS,uarch)265 TEST(CLUSTERS, uarch) {
266 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
267 		ASSERT_EQ(cpuinfo_uarch_cortex_a53, cpuinfo_get_cluster(i)->uarch);
268 	}
269 }
270 
TEST(CLUSTERS,midr)271 TEST(CLUSTERS, midr) {
272 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
273 		ASSERT_EQ(UINT32_C(0x410FD034), cpuinfo_get_cluster(i)->midr);
274 	}
275 }
276 
TEST(CLUSTERS,DISABLED_frequency)277 TEST(CLUSTERS, DISABLED_frequency) {
278 	for (uint32_t i = 0; i < cpuinfo_get_clusters_count(); i++) {
279 		ASSERT_EQ(UINT64_C(1516800000), cpuinfo_get_cluster(i)->frequency);
280 	}
281 }
282 
TEST(PACKAGES,count)283 TEST(PACKAGES, count) {
284 	ASSERT_EQ(1, cpuinfo_get_packages_count());
285 }
286 
TEST(PACKAGES,name)287 TEST(PACKAGES, name) {
288 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
289 		ASSERT_EQ(
290 			"Qualcomm MSM8937",
291 			std::string(
292 				cpuinfo_get_package(i)->name,
293 				strnlen(cpuinfo_get_package(i)->name, CPUINFO_PACKAGE_NAME_MAX)));
294 	}
295 }
296 
TEST(PACKAGES,processor_start)297 TEST(PACKAGES, processor_start) {
298 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
299 		ASSERT_EQ(0, cpuinfo_get_package(i)->processor_start);
300 	}
301 }
302 
TEST(PACKAGES,processor_count)303 TEST(PACKAGES, processor_count) {
304 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
305 		ASSERT_EQ(8, cpuinfo_get_package(i)->processor_count);
306 	}
307 }
308 
TEST(PACKAGES,core_start)309 TEST(PACKAGES, core_start) {
310 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
311 		ASSERT_EQ(0, cpuinfo_get_package(i)->core_start);
312 	}
313 }
314 
TEST(PACKAGES,core_count)315 TEST(PACKAGES, core_count) {
316 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
317 		ASSERT_EQ(8, cpuinfo_get_package(i)->core_count);
318 	}
319 }
320 
TEST(PACKAGES,cluster_start)321 TEST(PACKAGES, cluster_start) {
322 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
323 		ASSERT_EQ(0, cpuinfo_get_package(i)->cluster_start);
324 	}
325 }
326 
TEST(PACKAGES,cluster_count)327 TEST(PACKAGES, cluster_count) {
328 	for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
329 		ASSERT_EQ(2, cpuinfo_get_package(i)->cluster_count);
330 	}
331 }
332 
TEST(ISA,thumb)333 TEST(ISA, thumb) {
334 	ASSERT_TRUE(cpuinfo_has_arm_thumb());
335 }
336 
TEST(ISA,thumb2)337 TEST(ISA, thumb2) {
338 	ASSERT_TRUE(cpuinfo_has_arm_thumb2());
339 }
340 
TEST(ISA,armv5e)341 TEST(ISA, armv5e) {
342 	ASSERT_TRUE(cpuinfo_has_arm_v5e());
343 }
344 
TEST(ISA,armv6)345 TEST(ISA, armv6) {
346 	ASSERT_TRUE(cpuinfo_has_arm_v6());
347 }
348 
TEST(ISA,armv6k)349 TEST(ISA, armv6k) {
350 	ASSERT_TRUE(cpuinfo_has_arm_v6k());
351 }
352 
TEST(ISA,armv7)353 TEST(ISA, armv7) {
354 	ASSERT_TRUE(cpuinfo_has_arm_v7());
355 }
356 
TEST(ISA,armv7mp)357 TEST(ISA, armv7mp) {
358 	ASSERT_TRUE(cpuinfo_has_arm_v7mp());
359 }
360 
TEST(ISA,idiv)361 TEST(ISA, idiv) {
362 	ASSERT_TRUE(cpuinfo_has_arm_idiv());
363 }
364 
TEST(ISA,vfpv2)365 TEST(ISA, vfpv2) {
366 	ASSERT_FALSE(cpuinfo_has_arm_vfpv2());
367 }
368 
TEST(ISA,vfpv3)369 TEST(ISA, vfpv3) {
370 	ASSERT_TRUE(cpuinfo_has_arm_vfpv3());
371 }
372 
TEST(ISA,vfpv3_d32)373 TEST(ISA, vfpv3_d32) {
374 	ASSERT_TRUE(cpuinfo_has_arm_vfpv3_d32());
375 }
376 
TEST(ISA,vfpv3_fp16)377 TEST(ISA, vfpv3_fp16) {
378 	ASSERT_TRUE(cpuinfo_has_arm_vfpv3_fp16());
379 }
380 
TEST(ISA,vfpv3_fp16_d32)381 TEST(ISA, vfpv3_fp16_d32) {
382 	ASSERT_TRUE(cpuinfo_has_arm_vfpv3_fp16_d32());
383 }
384 
TEST(ISA,vfpv4)385 TEST(ISA, vfpv4) {
386 	ASSERT_TRUE(cpuinfo_has_arm_vfpv4());
387 }
388 
TEST(ISA,vfpv4_d32)389 TEST(ISA, vfpv4_d32) {
390 	ASSERT_TRUE(cpuinfo_has_arm_vfpv4_d32());
391 }
392 
TEST(ISA,wmmx)393 TEST(ISA, wmmx) {
394 	ASSERT_FALSE(cpuinfo_has_arm_wmmx());
395 }
396 
TEST(ISA,wmmx2)397 TEST(ISA, wmmx2) {
398 	ASSERT_FALSE(cpuinfo_has_arm_wmmx2());
399 }
400 
TEST(ISA,neon)401 TEST(ISA, neon) {
402 	ASSERT_TRUE(cpuinfo_has_arm_neon());
403 }
404 
TEST(ISA,neon_fp16)405 TEST(ISA, neon_fp16) {
406 	ASSERT_TRUE(cpuinfo_has_arm_neon_fp16());
407 }
408 
TEST(ISA,neon_fma)409 TEST(ISA, neon_fma) {
410 	ASSERT_TRUE(cpuinfo_has_arm_neon_fma());
411 }
412 
TEST(ISA,atomics)413 TEST(ISA, atomics) {
414 	ASSERT_FALSE(cpuinfo_has_arm_atomics());
415 }
416 
TEST(ISA,neon_rdm)417 TEST(ISA, neon_rdm) {
418 	ASSERT_FALSE(cpuinfo_has_arm_neon_rdm());
419 }
420 
TEST(ISA,fp16_arith)421 TEST(ISA, fp16_arith) {
422 	ASSERT_FALSE(cpuinfo_has_arm_fp16_arith());
423 }
424 
TEST(ISA,neon_fp16_arith)425 TEST(ISA, neon_fp16_arith) {
426 	ASSERT_FALSE(cpuinfo_has_arm_neon_fp16_arith());
427 }
428 
TEST(ISA,neon_dot)429 TEST(ISA, neon_dot) {
430 	ASSERT_FALSE(cpuinfo_has_arm_neon_dot());
431 }
432 
TEST(ISA,jscvt)433 TEST(ISA, jscvt) {
434 	ASSERT_FALSE(cpuinfo_has_arm_jscvt());
435 }
436 
TEST(ISA,fcma)437 TEST(ISA, fcma) {
438 	ASSERT_FALSE(cpuinfo_has_arm_fcma());
439 }
440 
TEST(ISA,aes)441 TEST(ISA, aes) {
442 	ASSERT_TRUE(cpuinfo_has_arm_aes());
443 }
444 
TEST(ISA,sha1)445 TEST(ISA, sha1) {
446 	ASSERT_TRUE(cpuinfo_has_arm_sha1());
447 }
448 
TEST(ISA,sha2)449 TEST(ISA, sha2) {
450 	ASSERT_TRUE(cpuinfo_has_arm_sha2());
451 }
452 
TEST(ISA,pmull)453 TEST(ISA, pmull) {
454 	ASSERT_TRUE(cpuinfo_has_arm_pmull());
455 }
456 
TEST(ISA,crc32)457 TEST(ISA, crc32) {
458 	ASSERT_TRUE(cpuinfo_has_arm_crc32());
459 }
460 
TEST(L1I,count)461 TEST(L1I, count) {
462 	ASSERT_EQ(8, cpuinfo_get_l1i_caches_count());
463 }
464 
TEST(L1I,non_null)465 TEST(L1I, non_null) {
466 	ASSERT_TRUE(cpuinfo_get_l1i_caches());
467 }
468 
TEST(L1I,size)469 TEST(L1I, size) {
470 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
471 		ASSERT_EQ(32 * 1024, cpuinfo_get_l1i_cache(i)->size);
472 	}
473 }
474 
TEST(L1I,associativity)475 TEST(L1I, associativity) {
476 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
477 		ASSERT_EQ(2, cpuinfo_get_l1i_cache(i)->associativity);
478 	}
479 }
480 
TEST(L1I,sets)481 TEST(L1I, sets) {
482 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
483 		ASSERT_EQ(
484 			cpuinfo_get_l1i_cache(i)->size,
485 			cpuinfo_get_l1i_cache(i)->sets * cpuinfo_get_l1i_cache(i)->line_size *
486 				cpuinfo_get_l1i_cache(i)->partitions * cpuinfo_get_l1i_cache(i)->associativity);
487 	}
488 }
489 
TEST(L1I,partitions)490 TEST(L1I, partitions) {
491 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
492 		ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->partitions);
493 	}
494 }
495 
TEST(L1I,line_size)496 TEST(L1I, line_size) {
497 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
498 		ASSERT_EQ(64, cpuinfo_get_l1i_cache(i)->line_size);
499 	}
500 }
501 
TEST(L1I,flags)502 TEST(L1I, flags) {
503 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
504 		ASSERT_EQ(0, cpuinfo_get_l1i_cache(i)->flags);
505 	}
506 }
507 
TEST(L1I,processors)508 TEST(L1I, processors) {
509 	for (uint32_t i = 0; i < cpuinfo_get_l1i_caches_count(); i++) {
510 		ASSERT_EQ(i, cpuinfo_get_l1i_cache(i)->processor_start);
511 		ASSERT_EQ(1, cpuinfo_get_l1i_cache(i)->processor_count);
512 	}
513 }
514 
TEST(L1D,count)515 TEST(L1D, count) {
516 	ASSERT_EQ(8, cpuinfo_get_l1d_caches_count());
517 }
518 
TEST(L1D,non_null)519 TEST(L1D, non_null) {
520 	ASSERT_TRUE(cpuinfo_get_l1d_caches());
521 }
522 
TEST(L1D,size)523 TEST(L1D, size) {
524 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
525 		ASSERT_EQ(32 * 1024, cpuinfo_get_l1d_cache(i)->size);
526 	}
527 }
528 
TEST(L1D,associativity)529 TEST(L1D, associativity) {
530 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
531 		ASSERT_EQ(4, cpuinfo_get_l1d_cache(i)->associativity);
532 	}
533 }
534 
TEST(L1D,sets)535 TEST(L1D, sets) {
536 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
537 		ASSERT_EQ(
538 			cpuinfo_get_l1d_cache(i)->size,
539 			cpuinfo_get_l1d_cache(i)->sets * cpuinfo_get_l1d_cache(i)->line_size *
540 				cpuinfo_get_l1d_cache(i)->partitions * cpuinfo_get_l1d_cache(i)->associativity);
541 	}
542 }
543 
TEST(L1D,partitions)544 TEST(L1D, partitions) {
545 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
546 		ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->partitions);
547 	}
548 }
549 
TEST(L1D,line_size)550 TEST(L1D, line_size) {
551 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
552 		ASSERT_EQ(64, cpuinfo_get_l1d_cache(i)->line_size);
553 	}
554 }
555 
TEST(L1D,flags)556 TEST(L1D, flags) {
557 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
558 		ASSERT_EQ(0, cpuinfo_get_l1d_cache(i)->flags);
559 	}
560 }
561 
TEST(L1D,processors)562 TEST(L1D, processors) {
563 	for (uint32_t i = 0; i < cpuinfo_get_l1d_caches_count(); i++) {
564 		ASSERT_EQ(i, cpuinfo_get_l1d_cache(i)->processor_start);
565 		ASSERT_EQ(1, cpuinfo_get_l1d_cache(i)->processor_count);
566 	}
567 }
568 
TEST(L2,count)569 TEST(L2, count) {
570 	ASSERT_EQ(2, cpuinfo_get_l2_caches_count());
571 }
572 
TEST(L2,non_null)573 TEST(L2, non_null) {
574 	ASSERT_TRUE(cpuinfo_get_l2_caches());
575 }
576 
TEST(L2,size)577 TEST(L2, size) {
578 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
579 		switch (i) {
580 			case 0:
581 				ASSERT_EQ(1024 * 1024, cpuinfo_get_l2_cache(i)->size);
582 				break;
583 			case 1:
584 				ASSERT_EQ(512 * 1024, cpuinfo_get_l2_cache(i)->size);
585 				break;
586 		}
587 	}
588 }
589 
TEST(L2,associativity)590 TEST(L2, associativity) {
591 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
592 		ASSERT_EQ(16, cpuinfo_get_l2_cache(i)->associativity);
593 	}
594 }
595 
TEST(L2,sets)596 TEST(L2, sets) {
597 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
598 		ASSERT_EQ(
599 			cpuinfo_get_l2_cache(i)->size,
600 			cpuinfo_get_l2_cache(i)->sets * cpuinfo_get_l2_cache(i)->line_size *
601 				cpuinfo_get_l2_cache(i)->partitions * cpuinfo_get_l2_cache(i)->associativity);
602 	}
603 }
604 
TEST(L2,partitions)605 TEST(L2, partitions) {
606 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
607 		ASSERT_EQ(1, cpuinfo_get_l2_cache(i)->partitions);
608 	}
609 }
610 
TEST(L2,line_size)611 TEST(L2, line_size) {
612 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
613 		ASSERT_EQ(64, cpuinfo_get_l2_cache(i)->line_size);
614 	}
615 }
616 
TEST(L2,flags)617 TEST(L2, flags) {
618 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
619 		ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->flags);
620 	}
621 }
622 
TEST(L2,processors)623 TEST(L2, processors) {
624 	for (uint32_t i = 0; i < cpuinfo_get_l2_caches_count(); i++) {
625 		switch (i) {
626 			case 0:
627 				ASSERT_EQ(0, cpuinfo_get_l2_cache(i)->processor_start);
628 				ASSERT_EQ(4, cpuinfo_get_l2_cache(i)->processor_count);
629 				break;
630 			case 1:
631 				ASSERT_EQ(4, cpuinfo_get_l2_cache(i)->processor_start);
632 				ASSERT_EQ(4, cpuinfo_get_l2_cache(i)->processor_count);
633 				break;
634 		}
635 	}
636 }
637 
TEST(L3,none)638 TEST(L3, none) {
639 	ASSERT_EQ(0, cpuinfo_get_l3_caches_count());
640 	ASSERT_FALSE(cpuinfo_get_l3_caches());
641 }
642 
TEST(L4,none)643 TEST(L4, none) {
644 	ASSERT_EQ(0, cpuinfo_get_l4_caches_count());
645 	ASSERT_FALSE(cpuinfo_get_l4_caches());
646 }
647 
648 #include <moto-g-gen5.h>
649 
main(int argc,char * argv[])650 int main(int argc, char* argv[]) {
651 #if CPUINFO_ARCH_ARM
652 	cpuinfo_set_hwcap(UINT32_C(0x003FB0D6));
653 	cpuinfo_set_hwcap2(UINT32_C(0x0000001F));
654 #endif
655 	cpuinfo_mock_filesystem(filesystem);
656 #ifdef __ANDROID__
657 	cpuinfo_mock_android_properties(properties);
658 #endif
659 	cpuinfo_initialize();
660 	::testing::InitGoogleTest(&argc, argv);
661 	return RUN_ALL_TESTS();
662 }
663