# *-*- Mode: Python -*-*
# vim: filetype=python

# This file is a stress test of supported qapi constructs that must
# parse and compile correctly.

# Whitelists to permit QAPI rule violations
{ 'pragma': {
    # Types whose member names may use '_'
    'member-name-exceptions': [
        'UserDefA'
    ],
    # Commands allowed to return a non-dictionary:
    'command-returns-exceptions': [
        'guest-get-time',
        'guest-sync' ] } }

{ 'struct': 'TestStruct',
  'data': { 'integer': {'type': 'int'}, 'boolean': 'bool', 'string': 'str' } }

# for testing enums
{ 'struct': 'NestedEnumsOne',
  'data': { 'enum1': 'EnumOne',   # Intentional forward reference
            '*enum2': 'EnumOne', 'enum3': 'EnumOne', '*enum4': 'EnumOne' } }

# An empty enum, although unusual, is currently acceptable
{ 'enum': 'MyEnum', 'data': [ ] }

# Likewise for an empty struct, including an empty base
{ 'struct': 'Empty1', 'data': { } }
{ 'struct': 'Empty2', 'base': 'Empty1', 'data': { } }

# Likewise for an empty union
{ 'union': 'Union',
  'base': { 'type': 'EnumOne' }, 'discriminator': 'type',
  'data': { } }

{ 'command': 'user-def-cmd0', 'data': 'Empty2', 'returns': 'Empty2' }

# for testing override of default naming heuristic
{ 'enum': 'QEnumTwo',
  'prefix': 'QENUM_TWO',
  'data': [ 'value1', 'value2' ] }

# for testing nested structs
{ 'struct': 'UserDefOne',
  'base': 'UserDefZero',        # intentional forward reference
  'data': { 'string': 'str',
            '*enum1': 'EnumOne' } }   # intentional forward reference

{ 'enum': 'EnumOne',
  'data': [ 'value1', 'value2', 'value3', 'value4' ] }

{ 'struct': 'UserDefZero',
  'data': { 'integer': 'int' } }

{ 'struct': 'UserDefTwoDictDict',
  'data': { 'userdef': 'UserDefOne', 'string': 'str' } }

{ 'struct': 'UserDefTwoDict',
  'data': { 'string1': 'str',
            'dict2': 'UserDefTwoDictDict',
            '*dict3': 'UserDefTwoDictDict' } }

{ 'struct': 'UserDefTwo',
  'data': { 'string0': 'str',
            'dict1': 'UserDefTwoDict' } }

{ 'struct': 'UserDefThree',
  'data': { 'string0': 'str' } }

# dummy struct to force generation of array types not otherwise mentioned
{ 'struct': 'ForceArrays',
  'data': { 'unused1':['UserDefOne'], 'unused2':['UserDefTwo'],
            'unused3':['TestStruct'] } }

# for testing unions
# Among other things, test that a name collision between branches does
# not cause any problems (since only one branch can be in use at a time),
# by intentionally using two branches that both have a C member 'a_b'
{ 'struct': 'UserDefA',
  'data': { 'boolean': 'bool', '*a_b': 'int' } }

{ 'struct': 'UserDefB',
  'data': { 'intb': 'int', '*a-b': 'bool' } }

{ 'union': 'UserDefFlatUnion',
  'base': 'UserDefUnionBase',   # intentional forward reference
  'discriminator': 'enum1',
  'data': { 'value1' : {'type': 'UserDefA'},
            'value2' : 'UserDefB',
            'value3' : 'UserDefB'
            # 'value4' defaults to empty
  } }

{ 'struct': 'UserDefUnionBase',
  'base': 'UserDefZero',
  'data': { 'string': 'str', 'enum1': 'EnumOne' } }

# this variant of UserDefFlatUnion defaults to a union that uses members with
# allocated types to test corner cases in the cleanup/dealloc visitor
{ 'union': 'UserDefFlatUnion2',
  'base': { '*integer': 'int', 'string': 'str', 'enum1': 'QEnumTwo' },
  'discriminator': 'enum1',
  'data': { 'value1' : 'UserDefC', # intentional forward reference
            'value2' : 'UserDefB' } }

{ 'struct': 'WrapAlternate',
  'data': { 'alt': 'UserDefAlternate' } }
{ 'alternate': 'UserDefAlternate',
  'data': { 'udfu': {'type': 'UserDefFlatUnion'}, 'e': 'EnumOne', 'i': 'int',
            'n': 'null' } }

{ 'struct': 'UserDefC',
  'data': { 'string1': 'str', 'string2': 'str' } }

# for testing use of 'number' within alternates
{ 'alternate': 'AltEnumBool', 'data': { 'e': 'EnumOne', 'b': 'bool' } }
{ 'alternate': 'AltEnumNum', 'data': { 'e': 'EnumOne', 'n': 'number' } }
{ 'alternate': 'AltNumEnum', 'data': { 'n': 'number', 'e': 'EnumOne' } }
{ 'alternate': 'AltEnumInt', 'data': { 'e': 'EnumOne', 'i': 'int' } }

# for testing use of 'str' within alternates
{ 'alternate': 'AltStrObj', 'data': { 's': 'str', 'o': 'TestStruct' } }

{ 'struct': 'ArrayStruct',
  'data': { 'integer': ['int'],
            's8': ['int8'],
            's16': ['int16'],
            's32': ['int32'],
            's64': ['int64'],
            'u8': ['uint8'],
            'u16': ['uint16'],
            'u32': ['uint32'],
            'u64': ['uint64'],
            'number': ['number'],
            'boolean': ['bool'],
            'string': ['str'],
            '*sz': ['size'],
            '*any': ['any'],
            '*user': ['Status'] } } # intentional forward ref. to sub-module

# for testing sub-modules
{ 'include': 'include/sub-module.json' }

# testing commands
{ 'command': 'user-def-cmd', 'data': {} }
{ 'command': 'user-def-cmd1', 'data': {'ud1a': 'UserDefOne'} }
{ 'command': 'user-def-cmd2',
  'data': {'ud1a': {'type': 'UserDefOne'}, '*ud1b': 'UserDefOne'},
  'returns': 'UserDefTwo' }

{ 'command': 'cmd-success-response', 'data': {}, 'success-response': false }
{ 'command': 'coroutine-cmd', 'data': {}, 'coroutine': true }

# Returning a non-dictionary requires a name from the whitelist
{ 'command': 'guest-get-time', 'data': {'a': 'int', '*b': 'int' },
  'returns': 'int' }
{ 'command': 'guest-sync', 'data': { 'arg': 'any' }, 'returns': 'any' }
{ 'command': 'boxed-struct', 'boxed': true, 'data': 'UserDefZero' }
{ 'command': 'boxed-union', 'data': 'UserDefFlatUnion', 'boxed': true }
{ 'command': 'boxed-empty', 'boxed': true, 'data': 'Empty1' }

# Smoke test on out-of-band and allow-preconfig-test
{ 'command': 'test-flags-command', 'allow-oob': true, 'allow-preconfig': true }

# For testing integer range flattening in opts-visitor. The following schema
# corresponds to the option format:
#
# -userdef i64=3-6,i64=-5--1,u64=2,u16=1,u16=7-12
#
# For simplicity, this example doesn't use [type=]discriminator nor optargs
# specific to discriminator values.
{ 'struct': 'UserDefOptions',
  'data': {
    '*i64' : [ 'int'    ],
    '*u64' : [ 'uint64' ],
    '*u16' : [ 'uint16' ],
    '*i64x':   'int'     ,
    '*u64x':   'uint64'  } }

# testing event
{ 'struct': 'EventStructOne',
  'data': { 'struct1': {'type': 'UserDefOne'}, 'string': 'str', '*enum2': 'EnumOne' } }

{ 'event': 'EVENT_A' }
{ 'event': 'EVENT_B',
  'data': { } }
{ 'event': 'EVENT_C',
  'data': { '*a': 'int', '*b': 'UserDefOne', 'c': 'str' } }
{ 'event': 'EVENT_D',
  'data': { 'a' : 'EventStructOne', 'b' : 'str', '*c': 'str', '*enum3': 'EnumOne' } }
{ 'event': 'EVENT_E', 'boxed': true, 'data': 'UserDefZero' }
{ 'event': 'EVENT_F', 'boxed': true, 'data': 'UserDefFlatUnion' }
{ 'event': 'EVENT_G', 'boxed': true, 'data': 'Empty1' }

# test that we correctly compile downstream extensions, as well as munge
# ticklish names
# also test union and alternate with just one branch
{ 'enum': '__org.qemu_x-Enum', 'data': [ '__org.qemu_x-value' ] }
{ 'struct': '__org.qemu_x-Base',
  'data': { '__org.qemu_x-member1': '__org.qemu_x-Enum' } }
{ 'struct': '__org.qemu_x-Struct', 'base': '__org.qemu_x-Base',
  'data': { '__org.qemu_x-member2': 'str', '*wchar-t': 'int' } }
{ 'alternate': '__org.qemu_x-Alt1', 'data': { '__org.qemu_x-branch': 'str' } }
{ 'struct': '__org.qemu_x-Struct2',
  'data': { 'array': ['__org.qemu_x-Union'] } }
{ 'union': '__org.qemu_x-Union', 'base': '__org.qemu_x-Base',
  'discriminator': '__org.qemu_x-member1',
  'data': { '__org.qemu_x-value': '__org.qemu_x-Struct2' } }
{ 'alternate': '__org.qemu_x-Alt',
  'data': { '__org.qemu_x-branch': '__org.qemu_x-Base' } }
{ 'event': '__ORG.QEMU_X-EVENT', 'data': '__org.qemu_x-Struct' }
{ 'command': '__org.qemu_x-command',
  'data': { 'a': ['__org.qemu_x-Enum'], 'b': ['__org.qemu_x-Struct'],
            'c': '__org.qemu_x-Union', 'd': '__org.qemu_x-Alt' } }

# test 'if' condition handling

{ 'struct': 'TestIfStruct',
  'data': { 'foo': 'int',
            'bar': { 'type': 'int', 'if': 'TEST_IF_STRUCT_BAR'} },
  'if': 'TEST_IF_STRUCT' }

{ 'enum': 'TestIfEnum',
  'data': [ 'foo', { 'name' : 'bar', 'if': 'TEST_IF_ENUM_BAR' } ],
  'if': 'TEST_IF_ENUM' }

{ 'union': 'TestIfUnion',
  'base': { 'type': 'TestIfEnum' },
  'discriminator': 'type',
  'data': { 'foo': 'TestStruct',
            'bar': { 'type': 'UserDefZero', 'if': 'TEST_IF_ENUM_BAR'} },
  'if': { 'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT'] } }

{ 'command': 'test-if-union-cmd',
  'data': { 'union-cmd-arg': 'TestIfUnion' },
  'if': { 'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT'] } }

{ 'alternate': 'TestIfAlternate',
  'data': { 'foo': 'int',
            'bar': { 'type': 'TestStruct', 'if': 'TEST_IF_ALT_BAR'} },
  'if': { 'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT'] } }

{ 'command': 'test-if-alternate-cmd',
  'data': { 'alt-cmd-arg': 'TestIfAlternate' },
  'if': { 'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT'] } }

{ 'command': 'test-if-cmd',
  'data': {
    'foo': 'TestIfStruct',
    'bar': { 'type': 'TestIfEnum', 'if': 'TEST_IF_CMD_BAR' } },
  'returns': 'UserDefThree',
  'if': { 'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT'] } }

{ 'command': 'test-cmd-return-def-three', 'returns': 'UserDefThree' }

{ 'event': 'TEST_IF_EVENT',
  'data': { 'foo': 'TestIfStruct',
            'bar': { 'type': ['TestIfEnum'], 'if': 'TEST_IF_EVT_BAR' } },
  'if': { 'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT'] } }

{ 'event': 'TEST_IF_EVENT2', 'data': {},
  'if': { 'not': { 'any': [ { 'not': 'TEST_IF_EVT' },
                            { 'not': 'TEST_IF_STRUCT' } ] } } }

# test 'features'

{ 'struct': 'FeatureStruct0',
  'data': { 'foo': 'int' },
  'features': [] }
{ 'struct': 'FeatureStruct1',
  'data': { 'foo': { 'type': 'int', 'features': [ 'deprecated' ] } },
  'features': [ 'feature1' ] }
{ 'struct': 'FeatureStruct2',
  'data': { 'foo': { 'type': 'int', 'features': [ 'unstable' ] } },
  'features': [ { 'name': 'feature1' } ] }
{ 'struct': 'FeatureStruct3',
  'data': { 'foo': 'int' },
  'features': [ 'feature1', 'feature2' ] }
{ 'struct': 'FeatureStruct4',
  'data': { 'namespace-test': 'int' },
  'features': [ 'namespace-test', 'int', 'name', 'if' ] }

{ 'struct': 'CondFeatureStruct1',
  'data': { 'foo': 'int' },
  'features': [ { 'name': 'feature1', 'if': 'TEST_IF_FEATURE_1'} ] }
{ 'struct': 'CondFeatureStruct2',
  'data': { 'foo': 'int' },
  'features': [ { 'name': 'feature1', 'if': 'TEST_IF_FEATURE_1'},
                { 'name': 'feature2', 'if': 'TEST_IF_FEATURE_2'} ] }
{ 'struct': 'CondFeatureStruct3',
  'data': { 'foo': 'int' },
  'features': [ { 'name': 'feature1',
                  'if': { 'all': [ 'TEST_IF_COND_1',
                                   'TEST_IF_COND_2'] } } ] }
{ 'struct': 'CondFeatureStruct4',
  'data': { 'foo': 'int' },
  'features': [ { 'name': 'feature1',
                  'if': {'any': ['TEST_IF_COND_1',
                                 'TEST_IF_COND_2'] } } ] }

{ 'enum': 'FeatureEnum1',
  'data': [ 'eins', 'zwei',
            { 'name': 'drei', 'features': [ 'deprecated' ] } ],
  'features': [ 'feature1' ] }

{ 'union': 'FeatureUnion1',
  'base': { 'tag': 'FeatureEnum1' },
  'discriminator': 'tag',
  'data': { 'eins': 'FeatureStruct1' },
  'features': [ 'feature1' ] }

{ 'alternate': 'FeatureAlternate1',
  'data': { 'eins': 'FeatureStruct1' },
  'features': [ 'feature1' ] }

{ 'command': 'test-features0',
  'data': { '*fs0': 'FeatureStruct0',
            '*fs1': 'FeatureStruct1',
            '*fs2': 'FeatureStruct2',
            '*fs3': 'FeatureStruct3',
            '*fs4': 'FeatureStruct4',
            '*cfs1': 'CondFeatureStruct1',
            '*cfs2': 'CondFeatureStruct2',
            '*cfs3': 'CondFeatureStruct3',
            '*cfs4': 'CondFeatureStruct4' },
  'returns': 'FeatureStruct1',
  'features': [] }

{ 'command': 'test-command-features1',
  'features': [ 'deprecated' ] }
{ 'command': 'test-command-features3',
  'features': [ 'unstable', 'feature1', 'feature2' ] }

{ 'command': 'test-command-cond-features1',
  'features': [ { 'name': 'feature1', 'if': 'TEST_IF_FEATURE_1'} ] }
{ 'command': 'test-command-cond-features2',
  'features': [ { 'name': 'feature1', 'if': 'TEST_IF_FEATURE_1'},
                { 'name': 'feature2', 'if': 'TEST_IF_FEATURE_2'} ] }
{ 'command': 'test-command-cond-features3',
  'features': [ { 'name': 'feature1',
                  'if': { 'all': [ 'TEST_IF_COND_1',
                                   'TEST_IF_COND_2'] } } ] }

{ 'event': 'TEST_EVENT_FEATURES0',
  'data': 'FeatureStruct1' }

{ 'event': 'TEST_EVENT_FEATURES1',
  'features': [ 'deprecated' ] }

{ 'event': 'TEST_EVENT_FEATURES2',
  'features': [ 'unstable' ] }
