# SPDX-License-Identifier: BSD-3-Clause
#
# Binding file for testing diamond inheritance (top-bottom).
#
#                diamond.yaml
#                  /    \
#                 /      \
#   base_amend.yaml      thing.yaml
#                \         /
#                 \       /
#                 base.yaml
#
# Which properties are specified at which levels is summarized below
# for convenience.
#
# * Binding level.
#   Diamond's left:
#   - prop-1 (amended in base_amend.yaml)
#   - prop-enum (amended in base_amend.yaml)
#   - prop-default (inherited from base.yaml)
#   Diamond's right:
#   - prop-1 (last amended in thing.yaml)
#   - prop-enum (amended in thing.yaml)
#   - prop-thing (inherited from thing.yaml)
#   Diamond's top:
#   - prop-enum (last amended here)
#   - prop-diamond
#
# * Child-binding level:
#   Diamond's left:
#   - child-prop-1 (amended in base_amend.yaml)
#   - child-prop-enum (amended in base_amend.yaml)
#   - child-prop-default (inherited from base.yaml)
#   Diamond's right:
#   - child-prop-1 (last amended in thing.yaml)
#   - child-prop-enum (amended in thing.yaml)
#   - child-prop-thing (inherited from thing.yaml)
#   Diamond's top:
#   - child-prop-enum (last amended here)
#   - child-prop-diamond
#
# * Grandchild-binding level:
#   Diamond's left:
#   - grandchild-prop-1 (amended in base_amend.yaml)
#   - grandchild-prop-enum (amended in base_amend.yaml)
#   - grandchild-prop-default (inherited from base.yaml)
#   Diamond's right:
#   - grandchild-prop-1 (last amended in thing.yaml)
#   - grandchild-prop-enum (amended in thing.yaml)
#   - grandchild-prop-thing (inherited from thing.yaml)
#   Diamond's top:
#   - grandchild-prop-enum (last amended here)
#   - grandchild-prop-diamond

description: Diamond's top.

compatible: diamond

include:
  # Diamond's left.
  - name: base_amend.yaml
    property-allowlist: [prop-1, prop-enum, prop-default]
    child-binding:
      property-allowlist: [child-prop-1, child-prop-enum, child-prop-default]
      child-binding:
        property-allowlist: [grandchild-prop-1, grandchild-prop-enum, grandchild-prop-default]
  # Diamond's right.
  - name: thing.yaml

properties:
  prop-diamond:
    type: int
  prop-enum:
    description: Overwritten in diamond.yaml.
    default: FOO

child-binding:
  description: Diamond's child-binding.

  properties:
    child-prop-diamond:
      type: int
    child-prop-enum:
      description: Overwritten in diamond.yaml (child).
      default: CHILD_FOO

  child-binding:
    properties:
      grandchild-prop-diamond:
        type: int
      grandchild-prop-enum:
        description: Overwritten in diamond.yaml (grandchild).
        default: GRANDCHILD_FOO
