mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.7 KiB
82 lines
2.7 KiB
# SPDX-License-Identifier: GPL-2.0+ |
|
# Copyright (c) 2016 Google, Inc |
|
# Written by Simon Glass <[email protected]> |
|
# |
|
# Test for the fdt modules |
|
|
|
import os |
|
import sys |
|
import tempfile |
|
import unittest |
|
|
|
import fdt |
|
from fdt import FdtScan |
|
import fdt_util |
|
import tools |
|
|
|
class TestFdt(unittest.TestCase): |
|
@classmethod |
|
def setUpClass(self): |
|
self._binman_dir = os.path.dirname(os.path.realpath(sys.argv[0])) |
|
self._indir = tempfile.mkdtemp(prefix='binmant.') |
|
tools.PrepareOutputDir(self._indir, True) |
|
|
|
def TestFile(self, fname): |
|
return os.path.join(self._binman_dir, 'test', fname) |
|
|
|
def GetCompiled(self, fname): |
|
return fdt_util.EnsureCompiled(self.TestFile(fname)) |
|
|
|
def _DeleteProp(self, dt): |
|
node = dt.GetNode('/microcode/update@0') |
|
node.DeleteProp('data') |
|
|
|
def testFdtNormal(self): |
|
fname = self.GetCompiled('34_x86_ucode.dts') |
|
dt = FdtScan(fname) |
|
self._DeleteProp(dt) |
|
|
|
def testFdtNormalProp(self): |
|
fname = self.GetCompiled('45_prop_test.dts') |
|
dt = FdtScan(fname) |
|
node = dt.GetNode('/binman/intel-me') |
|
self.assertEquals('intel-me', node.name) |
|
val = fdt_util.GetString(node, 'filename') |
|
self.assertEquals(str, type(val)) |
|
self.assertEquals('me.bin', val) |
|
|
|
prop = node.props['intval'] |
|
self.assertEquals(fdt.TYPE_INT, prop.type) |
|
self.assertEquals(3, fdt_util.GetInt(node, 'intval')) |
|
|
|
prop = node.props['intarray'] |
|
self.assertEquals(fdt.TYPE_INT, prop.type) |
|
self.assertEquals(list, type(prop.value)) |
|
self.assertEquals(2, len(prop.value)) |
|
self.assertEquals([5, 6], |
|
[fdt_util.fdt32_to_cpu(val) for val in prop.value]) |
|
|
|
prop = node.props['byteval'] |
|
self.assertEquals(fdt.TYPE_BYTE, prop.type) |
|
self.assertEquals(chr(8), prop.value) |
|
|
|
prop = node.props['bytearray'] |
|
self.assertEquals(fdt.TYPE_BYTE, prop.type) |
|
self.assertEquals(list, type(prop.value)) |
|
self.assertEquals(str, type(prop.value[0])) |
|
self.assertEquals(3, len(prop.value)) |
|
self.assertEquals([chr(1), '#', '4'], prop.value) |
|
|
|
prop = node.props['longbytearray'] |
|
self.assertEquals(fdt.TYPE_INT, prop.type) |
|
self.assertEquals(0x090a0b0c, fdt_util.GetInt(node, 'longbytearray')) |
|
|
|
prop = node.props['stringval'] |
|
self.assertEquals(fdt.TYPE_STRING, prop.type) |
|
self.assertEquals('message2', fdt_util.GetString(node, 'stringval')) |
|
|
|
prop = node.props['stringarray'] |
|
self.assertEquals(fdt.TYPE_STRING, prop.type) |
|
self.assertEquals(list, type(prop.value)) |
|
self.assertEquals(3, len(prop.value)) |
|
self.assertEquals(['another', 'multi-word', 'message'], prop.value)
|
|
|