# These are the available tests for generators
#
# General format is:
# <generator>
#    <input_file>
#      <output_file> : <golden_path>
#
# Where
#   - generator is the type of generator to use
#   - input_file is the input IDL
#   - output_file/golden_path are the expected output file names
#     and the expected content for those output files.
java-jni:
    inputs/simple_attribute.matter:
        jni/MyClusterClient-ReadImpl.cpp: outputs/simple_attribute/jni/MyClusterClient-ReadImpl.cpp
        jni/MyClusterClient-InvokeSubscribeImpl.cpp: outputs/simple_attribute/jni/MyClusterClient-InvokeSubscribeImpl.cpp
        jni/CHIPCallbackTypes.h: outputs/simple_attribute/jni/CHIPCallbackTypes.h
        jni/CHIPReadCallbacks.h: outputs/simple_attribute/jni/CHIPReadReadCallbacks.h

    inputs/global_struct_attribute.matter:
        jni/DemoClusterClient-ReadImpl.cpp: outputs/global_struct_attribute/jni/DemoClusterClient-ReadImpl.cpp
        jni/DemoClusterClient-InvokeSubscribeImpl.cpp: outputs/global_struct_attribute/jni/DemoClusterClient-InvokeSubscribeImpl.cpp
        jni/CHIPCallbackTypes.h: outputs/global_struct_attribute/jni/CHIPCallbackTypes.h
        jni/CHIPReadCallbacks.h: outputs/global_struct_attribute/jni/CHIPReadReadCallbacks.h

    inputs/cluster_struct_attribute.matter:
        jni/DemoClusterClient-ReadImpl.cpp: outputs/cluster_struct_attribute/jni/DemoClusterClient-ReadImpl.cpp
        jni/DemoClusterClient-InvokeSubscribeImpl.cpp: outputs/cluster_struct_attribute/jni/DemoClusterClient-InvokeSubscribeImpl.cpp
        jni/CHIPCallbackTypes.h: outputs/cluster_struct_attribute/jni/CHIPCallbackTypes.h
        jni/CHIPReadCallbacks.h: outputs/cluster_struct_attribute/jni/CHIPReadReadCallbacks.h

    inputs/several_clusters.matter:
        jni/FirstClient-ReadImpl.cpp: outputs/several_clusters/jni/FirstClient-ReadImpl.cpp
        jni/SecondClient-ReadImpl.cpp: outputs/several_clusters/jni/SecondClient-ReadImpl.cpp
        jni/ThirdClient-ReadImpl.cpp: outputs/several_clusters/jni/ThirdClient-ReadImpl.cpp
        jni/FirstClient-InvokeSubscribeImpl.cpp: outputs/several_clusters/jni/FirstClient-InvokeSubscribeImpl.cpp
        jni/SecondClient-InvokeSubscribeImpl.cpp: outputs/several_clusters/jni/SecondClient-InvokeSubscribeImpl.cpp
        jni/ThirdClient-InvokeSubscribeImpl.cpp: outputs/several_clusters/jni/ThirdClient-InvokeSubscribeImpl.cpp
        jni/CHIPCallbackTypes.h: outputs/several_clusters/jni/CHIPCallbackTypes.h
        jni/CHIPReadCallbacks.h: outputs/several_clusters/jni/CHIPReadReadCallbacks.h

    inputs/optional_argument.matter:
        jni/MyClusterClient-ReadImpl.cpp: outputs/optional_argument/jni/MyClusterClient-ReadImpl.cpp
        jni/MyClusterClient-InvokeSubscribeImpl.cpp: outputs/optional_argument/jni/MyClusterClient-InvokeSubscribeImpl.cpp
        jni/CHIPCallbackTypes.h: outputs/optional_argument/jni/CHIPCallbackTypes.h
        jni/CHIPReadCallbacks.h: outputs/optional_argument/jni/CHIPReadReadCallbacks.h

java-class:
    inputs/several_clusters.matter:
        java/chip/devicecontroller/ClusterWriteMapping.java: outputs/several_clusters/java/ClusterWriteMapping.java
        java/chip/devicecontroller/ClusterReadMapping.java: outputs/several_clusters/java/ClusterReadMapping.java
        java/chip/devicecontroller/ClusterIDMapping.java: outputs/several_clusters/java/ClusterIDMapping.java

bridge:
    inputs/simple_attribute.matter:
        bridge/BridgeClustersImpl.h: outputs/simple_attribute/bridge/BridgeClustersImpl.h
        bridge/BridgeGlobalStructs.h: outputs/simple_attribute/bridge/BridgeGlobalStructs.h
        bridge/MyClusterServer.h: outputs/simple_attribute/bridge/MyClusterServer.h

    inputs/global_struct_attribute.matter:
        bridge/BridgeClustersImpl.h: outputs/global_struct_attribute/bridge/BridgeClustersImpl.h
        bridge/BridgeGlobalStructs.h: outputs/global_struct_attribute/bridge/BridgeGlobalStructs.h
        bridge/DemoClusterServer.h: outputs/global_struct_attribute/bridge/DemoClusterServer.h

    inputs/cluster_struct_attribute.matter:
        bridge/BridgeClustersImpl.h: outputs/cluster_struct_attribute/bridge/BridgeClustersImpl.h
        bridge/BridgeGlobalStructs.h: outputs/cluster_struct_attribute/bridge/BridgeGlobalStructs.h
        bridge/DemoClusterServer.h: outputs/cluster_struct_attribute/bridge/DemoClusterServer.h

    inputs/several_clusters.matter:
        bridge/BridgeClustersImpl.h: outputs/several_clusters/bridge/BridgeClustersImpl.h
        bridge/BridgeGlobalStructs.h: outputs/several_clusters/bridge/BridgeGlobalStructs.h
        bridge/FirstServer.h: outputs/several_clusters/bridge/FirstServer.h
        bridge/SecondServer.h: outputs/several_clusters/bridge/SecondServer.h
        bridge/ThirdServer.h: outputs/several_clusters/bridge/ThirdServer.h
        bridge/Third.h: outputs/several_clusters/bridge/Third.h

    inputs/cluster_with_commands.matter:
        bridge/BridgeClustersImpl.h: outputs/cluster_with_commands/bridge/BridgeClustersImpl.h
        bridge/BridgeGlobalStructs.h: outputs/cluster_with_commands/bridge/BridgeGlobalStructs.h
        bridge/OnOff.h: outputs/cluster_with_commands/bridge/OnOff.h

cpp-app:
    inputs/several_clusters.matter:
        app/PluginApplicationCallbacks.h: outputs/several_clusters/cpp-app/PluginApplicationCallbacks.h
        app/callback-stub.cpp: outputs/several_clusters/cpp-app/callback-stub.cpp

    inputs/large_all_clusters_app.matter:
        app/PluginApplicationCallbacks.h: outputs/large_all_clusters_app/cpp-app/PluginApplicationCallbacks.h
        app/callback-stub.cpp: outputs/large_all_clusters_app/cpp-app/callback-stub.cpp

    inputs/large_lighting_app.matter:
        app/PluginApplicationCallbacks.h: outputs/large_lighting_app/cpp-app/PluginApplicationCallbacks.h
        app/callback-stub.cpp: outputs/large_lighting_app/cpp-app/callback-stub.cpp

custom-example-proto:
    inputs/several_clusters.matter:
        proto/first_cluster.proto: outputs/proto/first_cluster.proto
        proto/second_cluster.proto: outputs/proto/second_cluster.proto
        proto/third_cluster.proto: outputs/proto/third_cluster.proto

    inputs/large_all_clusters_app.matter:
        proto/ota_software_update_provider_cluster.proto: outputs/proto/ota_software_update_provider_cluster.proto
