diff --git a/CHANGELOG.md b/CHANGELOG.md index 47db805..49abddb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ Versioning]. - solve the problem of failed parsing of containers ([@henryriley0]) - Fixes #421 - Added `registerLimit` option to specify the registers to display - PR #444 ([@chenzhiy2001]) +- add qt nested structure unit test -PR #452([@henryriley0]) ## [0.27.0] - 2024-02-07 diff --git a/src/test/unit/gdb_expansion.test.ts b/src/test/unit/gdb_expansion.test.ts index a455b87..a3c6cc9 100644 --- a/src/test/unit/gdb_expansion.test.ts +++ b/src/test/unit/gdb_expansion.test.ts @@ -224,6 +224,133 @@ suite("GDB Value Expansion", () => { } ]); }); + test("QT nested structure", () => { + const node = `{{ref = {atomic = {_q_value = {> = {static _S_alignment = 4, _M_i = -1}, }}}, size = 0, static shared_null = }, {ref = {atomic = {_q_value = {> = {static _S_alignment = 4, _M_i = 0}, }}}, size = 0, static shared_null = }}`; + assert.strictEqual(isExpandable(node), 1); + const variables = expandValue(variableCreate, node); + assert.deepStrictEqual(variables, [ + { + "name": "[0]", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "ref", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "atomic", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "_q_value", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "std::__atomic_base>", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "_S_alignment", + "value": "4", + "variablesReference": 0 + }, + { + "name": "_M_i", + "value": "-1", + "variablesReference": 0 + } + ] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "size", + "value": "0", + "variablesReference": 0 + }, + { + "name": "shared_null", + "value": "", + "variablesReference": 0 + } + ] + } + }, + { + "name": "[1]", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "ref", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "atomic", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "_q_value", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "std::__atomic_base>", + "value": "Object", + "variablesReference": { + "expanded": [ + { + "name": "_S_alignment", + "value": "4", + "variablesReference": 0 + }, + { + "name": "_M_i", + "value": "0", + "variablesReference": 0 + } + ] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "size", + "value": "0", + "variablesReference": 0 + }, + { + "name": "shared_null", + "value": "", + "variablesReference": 0 + } + ] + } + } + ]); + }); test("Simple node with errors", () => { const node = `{_enableMipMaps = false, _minFilter = , _magFilter = , _wrapX = , _wrapY = , _inMode = 6408, _mode = 6408, _id = 1, _width = 1024, _height = 1024}`; assert.strictEqual(isExpandable(node), 1);