File: test_parse_cpu_string.py

package info (click to toggle)
python-cpuinfo 9.0.0%2Bgit20221119-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 892 kB
  • sloc: python: 11,917; makefile: 74
file content (115 lines) | stat: -rw-r--r-- 5,885 bytes parent folder | download
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115


import unittest
from cpuinfo import *
import helpers




class TestParseCPUString(unittest.TestCase):
	def test_to_decimal_string(self):
		self.assertEqual('2.8', cpuinfo._to_decimal_string('2.80'))
		self.assertEqual('2.0', cpuinfo._to_decimal_string('2'))
		self.assertEqual('3.0', cpuinfo._to_decimal_string(3))
		self.assertEqual('6.5', cpuinfo._to_decimal_string(6.5))
		self.assertEqual('7.002', cpuinfo._to_decimal_string(7.002))
		self.assertEqual('4.00000000001', cpuinfo._to_decimal_string('4.00000000001'))
		self.assertEqual('5.0', cpuinfo._to_decimal_string('5.000000000000'))

		self.assertEqual('0.0', cpuinfo._to_decimal_string('invalid'))
		self.assertEqual('0.0', cpuinfo._to_decimal_string('8.778.9'))
		self.assertEqual('0.0', cpuinfo._to_decimal_string(''))
		self.assertEqual('0.0', cpuinfo._to_decimal_string(None))

	def test_hz_short_to_full(self):
		self.assertEqual((2800000000, 0), cpuinfo._hz_short_to_full('2.8', 9))
		self.assertEqual((1200000, 0), cpuinfo._hz_short_to_full('1.2', 6))
		self.assertEqual((3200000000, 0), cpuinfo._hz_short_to_full('3.2', 9))
		self.assertEqual((9001200000, 0), cpuinfo._hz_short_to_full('9001.2', 6))
		self.assertEqual((0, 0), cpuinfo._hz_short_to_full('0.0', 0))
		self.assertEqual((2, 87), cpuinfo._hz_short_to_full('2.87', 0))

		self.assertEqual((0, 0), cpuinfo._hz_short_to_full('invalid', 0))
		self.assertEqual((0, 0), cpuinfo._hz_short_to_full('8.778.9', 0))
		self.assertEqual((0, 0), cpuinfo._hz_short_to_full('', 0))
		self.assertEqual((0, 0), cpuinfo._hz_short_to_full(None, 0))

	def test_hz_friendly_to_full(self):
		self.assertEqual((2800000000, 0), cpuinfo._hz_friendly_to_full('2.80GHz'))
		self.assertEqual((1200000, 0), cpuinfo._hz_friendly_to_full('1.20 mHz'))
		self.assertEqual((3693150000, 0), cpuinfo._hz_friendly_to_full('3693.15-MHz'))
		self.assertEqual((12000000000, 0), cpuinfo._hz_friendly_to_full('12 GHz'))
		self.assertEqual((2, 6), cpuinfo._hz_friendly_to_full('2.6 Hz'))
		self.assertEqual((0, 0), cpuinfo._hz_friendly_to_full('0 Hz'))

		self.assertEqual((0, 0), cpuinfo._hz_friendly_to_full('invalid'))
		self.assertEqual((0, 0), cpuinfo._hz_friendly_to_full('8.778.9'))
		self.assertEqual((0, 0), cpuinfo._hz_friendly_to_full(''))
		self.assertEqual((0, 0), cpuinfo._hz_friendly_to_full(None))

	def test_hz_short_to_friendly(self):
		self.assertEqual('2.8000 GHz', cpuinfo._hz_short_to_friendly('2.8', 9))
		self.assertEqual('1.2000 MHz', cpuinfo._hz_short_to_friendly('1.2', 6))
		self.assertEqual('3.2000 GHz', cpuinfo._hz_short_to_friendly('3.2', 9))
		self.assertEqual('1.3000 Hz', cpuinfo._hz_short_to_friendly('1.3', 0))
		self.assertEqual('0.0000 Hz', cpuinfo._hz_short_to_friendly('0.0', 0))

		self.assertEqual('0.0000 Hz', cpuinfo._hz_short_to_friendly('invalid', 0))
		self.assertEqual('0.0000 Hz', cpuinfo._hz_short_to_friendly('8.778.9', 0))
		self.assertEqual('0.0000 Hz', cpuinfo._hz_short_to_friendly('', 0))
		self.assertEqual('0.0000 Hz', cpuinfo._hz_short_to_friendly(None, 0))

	def test_parse_cpu_brand_string(self):
		hz, scale = cpuinfo._parse_cpu_brand_string('Intel(R) Pentium(R) CPU G640 @ 2.80GHz')
		self.assertEqual((hz, scale), ('2.8', 9))

		hz, scale = cpuinfo._parse_cpu_brand_string('Intel(R) Pentium(R) CPU @ 1.20MHz')
		self.assertEqual((hz, scale), ('1.2', 6))

		# NOTE: No @ symbol
		hz, scale = cpuinfo._parse_cpu_brand_string('Intel(R) Pentium(R) D CPU 3.20GHz')
		self.assertEqual((hz, scale), ('3.2', 9))

		# NOTE: No @ symbol and no Hz
		hz, scale = cpuinfo._parse_cpu_brand_string('AMD Ryzen 7 2700X Eight-Core Processor')
		self.assertEqual((hz, scale), ('0.0', 0))

	def test_parse_cpu_brand_string_dx(self):
		hz, scale, brand, vendor_id, stepping, model, family = \
		cpuinfo._parse_cpu_brand_string_dx("Intel(R) Pentium(R) CPU G640 @ 2.80GHz (fam: 06, model: 2a, stepping: 07)")
		self.assertEqual('Intel(R) Pentium(R) CPU G640 @ 2.80GHz', brand)
		self.assertEqual((hz, scale), ('2.8', 9))
		self.assertEqual((vendor_id, stepping, model, family), (None, 7, 42, 6))

		hz, scale, brand, vendor_id, stepping, model, family = \
		cpuinfo._parse_cpu_brand_string_dx("Intel(R) Pentium(R) CPU G640 @ 2.80GHz (family: 0x6, model: 0x2a, stepping: 0x7)")
		self.assertEqual('Intel(R) Pentium(R) CPU G640 @ 2.80GHz', brand)
		self.assertEqual((hz, scale), ('2.8', 9))
		self.assertEqual((vendor_id, stepping, model, family), (None, 7, 42, 6))

		hz, scale, brand, vendor_id, stepping, model, family = \
		cpuinfo._parse_cpu_brand_string_dx("Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz")
		self.assertEqual("Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz", brand)
		self.assertEqual((hz, scale), ('2.93', 9))
		self.assertEqual((vendor_id, stepping, model, family), (None, None, None, None))

		hz, scale, brand, vendor_id, stepping, model, family = \
		cpuinfo._parse_cpu_brand_string_dx("Intel(R) Pentium(R) CPU G640 @ 2.80GHz (2793.73-MHz K8-class CPU)")
		self.assertEqual("Intel(R) Pentium(R) CPU G640 @ 2.80GHz", brand)
		self.assertEqual((hz, scale), ('2.8', 9))
		self.assertEqual((vendor_id, stepping, model, family), (None, None, None, None))

		# NOTE: No @ symbol
		hz, scale, brand, vendor_id, stepping, model, family = \
		cpuinfo._parse_cpu_brand_string_dx("Intel(R) Pentium(R) D CPU 3.20GHz")
		self.assertEqual("Intel(R) Pentium(R) D CPU 3.20GHz", brand)
		self.assertEqual((hz, scale), ('3.2', 9))
		self.assertEqual((vendor_id, stepping, model, family), (None, None, None, None))

		# NOTE: No @ symbol and no Hz
		hz, scale, brand, vendor_id, stepping, model, family = \
		cpuinfo._parse_cpu_brand_string_dx("AMD Ryzen 7 2700X Eight-Core Processor          (3693.15-MHz K8-class CPU) (fam: 06, model: 2a, stepping: 07)")
		self.assertEqual("AMD Ryzen 7 2700X Eight-Core Processor", brand)
		self.assertEqual((hz, scale), ('3693.15', 6))
		self.assertEqual((vendor_id, stepping, model, family), (None, 7, 42, 6))