// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "tools/fidlcat/interception_tests/test_library.h"

#include <iostream>
#include <memory>
#include <sstream>
#include <string>

#include "src/lib/fidl_codec/library_loader.h"

// Generated with go/fidlbolt using this text:
// library fidl.examples.echo;
//
// using zx;
//
// @discoverable
// protocol Echo {
//     EchoString(struct {
//         value string:optional;
//     }) -> (struct {
//         response string:optional;
//     });
//     EchoHandle(resource struct {
//         handle zx.handle;
//     }) -> (resource struct {
//         handle zx.handle;
//     });
//     -> OnPong();
// };
//     -> OnPong();
// };

std::string echo_service = R"({
  "name": "fidl.examples.echo",
  "library_dependencies": [
    {
      "name": "zx",
      "declarations": {
        "zx/rights": {
          "kind": "bits"
        },
        "zx/CHANNEL_MAX_MSG_BYTES": {
          "kind": "const"
        },
        "zx/CHANNEL_MAX_MSG_HANDLES": {
          "kind": "const"
        },
        "zx/MAX_NAME_LEN": {
          "kind": "const"
        },
        "zx/MAX_CPUS": {
          "kind": "const"
        },
        "zx/RIGHTS_BASIC": {
          "kind": "const"
        },
        "zx/RIGHTS_IO": {
          "kind": "const"
        },
        "zx/RIGHTS_PROPERTY": {
          "kind": "const"
        },
        "zx/RIGHTS_POLICY": {
          "kind": "const"
        },
        "zx/DEFAULT_CHANNEL_RIGHTS": {
          "kind": "const"
        },
        "zx/DEFAULT_EVENT_RIGHTS": {
          "kind": "const"
        },
        "zx/obj_type": {
          "kind": "enum"
        },
        "zx/handle": {
          "kind": "experimental_resource"
        },
        "zx/status": {
          "kind": "type_alias"
        },
        "zx/time": {
          "kind": "type_alias"
        },
        "zx/duration": {
          "kind": "type_alias"
        },
        "zx/ticks": {
          "kind": "type_alias"
        },
        "zx/koid": {
          "kind": "type_alias"
        },
        "zx/vaddr": {
          "kind": "type_alias"
        },
        "zx/paddr": {
          "kind": "type_alias"
        },
        "zx/paddr32": {
          "kind": "type_alias"
        },
        "zx/gpaddr": {
          "kind": "type_alias"
        },
        "zx/off": {
          "kind": "type_alias"
        },
        "zx/procarg": {
          "kind": "type_alias"
        },
        "zx/signals": {
          "kind": "type_alias"
        }
      }
    }
  ],
  "bits_declarations": [],
  "const_declarations": [],
  "enum_declarations": [],
  "experimental_resource_declarations": [],
  "protocol_declarations": [
    {
      "name": "fidl.examples.echo/Echo",
      "location": {
        "filename": "fidlbolt.fidl",
        "line": 33,
        "column": 10,
        "length": 4
      },
      "maybe_attributes": [
        {
          "name": "discoverable",
          "arguments": [],
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 32,
            "column": 1,
            "length": 13
          }
        }
      ],
      "composed_protocols": [],
      "methods": [
        {
          "ordinal": 2936880781197466513,
          "name": "EchoString",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 34,
            "column": 5,
            "length": 10
          },
          "has_request": true,
          "maybe_request": [
            {
              "type": {
                "kind": "string",
                "nullable": true,
                "type_shape_v1": {
                  "inline_size": 16,
                  "alignment": 8,
                  "depth": 1,
                  "max_handles": 0,
                  "max_out_of_line": 4294967295,
                  "has_padding": true,
                  "has_flexible_envelope": false
                },
                "type_shape_v2": {
                  "inline_size": 16,
                  "alignment": 8,
                  "depth": 1,
                  "max_handles": 0,
                  "max_out_of_line": 4294967295,
                  "has_padding": true,
                  "has_flexible_envelope": false
                }
              },
              "name": "value",
              "location": {
                "filename": "fidlbolt.fidl",
                "line": 35,
                "column": 9,
                "length": 5
              },
              "field_shape_v1": {
                "offset": 16,
                "padding": 0
              },
              "field_shape_v2": {
                "offset": 16,
                "padding": 0
              }
            }
          ],
          "maybe_request_payload": {
            "kind": "identifier",
            "identifier": "fidl.examples.echo/EchoEchoStringRequest",
            "nullable": false,
            "type_shape_v1": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            }
          },
          "maybe_request_type_shape_v1": {
            "inline_size": 32,
            "alignment": 8,
            "depth": 1,
            "max_handles": 0,
            "max_out_of_line": 4294967295,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "maybe_request_type_shape_v2": {
            "inline_size": 32,
            "alignment": 8,
            "depth": 1,
            "max_handles": 0,
            "max_out_of_line": 4294967295,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "has_response": true,
          "maybe_response": [
            {
              "type": {
                "kind": "string",
                "nullable": true,
                "type_shape_v1": {
                  "inline_size": 16,
                  "alignment": 8,
                  "depth": 1,
                  "max_handles": 0,
                  "max_out_of_line": 4294967295,
                  "has_padding": true,
                  "has_flexible_envelope": false
                },
                "type_shape_v2": {
                  "inline_size": 16,
                  "alignment": 8,
                  "depth": 1,
                  "max_handles": 0,
                  "max_out_of_line": 4294967295,
                  "has_padding": true,
                  "has_flexible_envelope": false
                }
              },
              "name": "response",
              "location": {
                "filename": "fidlbolt.fidl",
                "line": 37,
                "column": 9,
                "length": 8
              },
              "field_shape_v1": {
                "offset": 16,
                "padding": 0
              },
              "field_shape_v2": {
                "offset": 16,
                "padding": 0
              }
            }
          ],
          "maybe_response_payload": {
            "kind": "identifier",
            "identifier": "fidl.examples.echo/EchoEchoStringTopResponse",
            "nullable": false,
            "type_shape_v1": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            }
          },
          "maybe_response_type_shape_v1": {
            "inline_size": 32,
            "alignment": 8,
            "depth": 1,
            "max_handles": 0,
            "max_out_of_line": 4294967295,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "maybe_response_type_shape_v2": {
            "inline_size": 32,
            "alignment": 8,
            "depth": 1,
            "max_handles": 0,
            "max_out_of_line": 4294967295,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "is_composed": false,
          "has_error": false
        },
        {
          "ordinal": 9059114273465311787,
          "name": "EchoHandle",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 39,
            "column": 5,
            "length": 10
          },
          "has_request": true,
          "maybe_request": [
            {
              "type": {
                "kind": "handle",
                "obj_type": 0,
                "subtype": "handle",
                "rights": 2147483648,
                "nullable": false,
                "type_shape_v1": {
                  "inline_size": 4,
                  "alignment": 4,
                  "depth": 0,
                  "max_handles": 1,
                  "max_out_of_line": 0,
                  "has_padding": false,
                  "has_flexible_envelope": false
                },
                "type_shape_v2": {
                  "inline_size": 4,
                  "alignment": 4,
                  "depth": 0,
                  "max_handles": 1,
                  "max_out_of_line": 0,
                  "has_padding": false,
                  "has_flexible_envelope": false
                }
              },
              "name": "handle",
              "location": {
                "filename": "fidlbolt.fidl",
                "line": 40,
                "column": 9,
                "length": 6
              },
              "field_shape_v1": {
                "offset": 16,
                "padding": 4
              },
              "field_shape_v2": {
                "offset": 16,
                "padding": 4
              }
            }
          ],
          "maybe_request_payload": {
            "kind": "identifier",
            "identifier": "fidl.examples.echo/EchoEchoHandleRequest",
            "nullable": false,
            "type_shape_v1": {
              "inline_size": 8,
              "alignment": 8,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": true,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 8,
              "alignment": 8,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": true,
              "has_flexible_envelope": false
            }
          },
          "maybe_request_type_shape_v1": {
            "inline_size": 24,
            "alignment": 8,
            "depth": 0,
            "max_handles": 1,
            "max_out_of_line": 0,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "maybe_request_type_shape_v2": {
            "inline_size": 24,
            "alignment": 8,
            "depth": 0,
            "max_handles": 1,
            "max_out_of_line": 0,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "has_response": true,
          "maybe_response": [
            {
              "type": {
                "kind": "handle",
                "obj_type": 0,
                "subtype": "handle",
                "rights": 2147483648,
                "nullable": false,
                "type_shape_v1": {
                  "inline_size": 4,
                  "alignment": 4,
                  "depth": 0,
                  "max_handles": 1,
                  "max_out_of_line": 0,
                  "has_padding": false,
                  "has_flexible_envelope": false
                },
                "type_shape_v2": {
                  "inline_size": 4,
                  "alignment": 4,
                  "depth": 0,
                  "max_handles": 1,
                  "max_out_of_line": 0,
                  "has_padding": false,
                  "has_flexible_envelope": false
                }
              },
              "name": "handle",
              "location": {
                "filename": "fidlbolt.fidl",
                "line": 42,
                "column": 9,
                "length": 6
              },
              "field_shape_v1": {
                "offset": 16,
                "padding": 4
              },
              "field_shape_v2": {
                "offset": 16,
                "padding": 4
              }
            }
          ],
          "maybe_response_payload": {
            "kind": "identifier",
            "identifier": "fidl.examples.echo/EchoEchoHandleTopResponse",
            "nullable": false,
            "type_shape_v1": {
              "inline_size": 8,
              "alignment": 8,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": true,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 8,
              "alignment": 8,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": true,
              "has_flexible_envelope": false
            }
          },
          "maybe_response_type_shape_v1": {
            "inline_size": 24,
            "alignment": 8,
            "depth": 0,
            "max_handles": 1,
            "max_out_of_line": 0,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "maybe_response_type_shape_v2": {
            "inline_size": 24,
            "alignment": 8,
            "depth": 0,
            "max_handles": 1,
            "max_out_of_line": 0,
            "has_padding": true,
            "has_flexible_envelope": false
          },
          "is_composed": false,
          "has_error": false
        },
        {
          "ordinal": 1120886698987607603,
          "name": "OnPong",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 44,
            "column": 8,
            "length": 6
          },
          "has_request": false,
          "has_response": true,
          "maybe_response": [],
          "maybe_response_type_shape_v1": {
            "inline_size": 16,
            "alignment": 8,
            "depth": 0,
            "max_handles": 0,
            "max_out_of_line": 0,
            "has_padding": false,
            "has_flexible_envelope": false
          },
          "maybe_response_type_shape_v2": {
            "inline_size": 16,
            "alignment": 8,
            "depth": 0,
            "max_handles": 0,
            "max_out_of_line": 0,
            "has_padding": false,
            "has_flexible_envelope": false
          },
          "is_composed": false,
          "has_error": false
        }
      ]
    }
  ],
  "service_declarations": [],
  "struct_declarations": [
    {
      "name": "fidl.examples.echo/EchoEchoStringRequest",
      "naming_context": [
        "Echo",
        "EchoString",
        "Request"
      ],
      "location": {
        "filename": "fidlbolt.fidl",
        "line": 34,
        "column": 16,
        "length": 45
      },
      "members": [
        {
          "type": {
            "kind": "string",
            "nullable": true,
            "type_shape_v1": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            }
          },
          "name": "value",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 35,
            "column": 9,
            "length": 5
          },
          "field_shape_v1": {
            "offset": 0,
            "padding": 0
          },
          "field_shape_v2": {
            "offset": 0,
            "padding": 0
          }
        }
      ],
      "resource": false,
      "type_shape_v1": {
        "inline_size": 16,
        "alignment": 8,
        "depth": 1,
        "max_handles": 0,
        "max_out_of_line": 4294967295,
        "has_padding": true,
        "has_flexible_envelope": false
      },
      "type_shape_v2": {
        "inline_size": 16,
        "alignment": 8,
        "depth": 1,
        "max_handles": 0,
        "max_out_of_line": 4294967295,
        "has_padding": true,
        "has_flexible_envelope": false
      }
    },
    {
      "name": "fidl.examples.echo/EchoEchoStringTopResponse",
      "naming_context": [
        "Echo",
        "EchoString",
        "Response"
      ],
      "location": {
        "filename": "fidlbolt.fidl",
        "line": 36,
        "column": 12,
        "length": 48
      },
      "members": [
        {
          "type": {
            "kind": "string",
            "nullable": true,
            "type_shape_v1": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 16,
              "alignment": 8,
              "depth": 1,
              "max_handles": 0,
              "max_out_of_line": 4294967295,
              "has_padding": true,
              "has_flexible_envelope": false
            }
          },
          "name": "response",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 37,
            "column": 9,
            "length": 8
          },
          "field_shape_v1": {
            "offset": 0,
            "padding": 0
          },
          "field_shape_v2": {
            "offset": 0,
            "padding": 0
          }
        }
      ],
      "resource": false,
      "type_shape_v1": {
        "inline_size": 16,
        "alignment": 8,
        "depth": 1,
        "max_handles": 0,
        "max_out_of_line": 4294967295,
        "has_padding": true,
        "has_flexible_envelope": false
      },
      "type_shape_v2": {
        "inline_size": 16,
        "alignment": 8,
        "depth": 1,
        "max_handles": 0,
        "max_out_of_line": 4294967295,
        "has_padding": true,
        "has_flexible_envelope": false
      }
    },
    {
      "name": "fidl.examples.echo/EchoEchoHandleRequest",
      "naming_context": [
        "Echo",
        "EchoHandle",
        "Request"
      ],
      "location": {
        "filename": "fidlbolt.fidl",
        "line": 39,
        "column": 16,
        "length": 49
      },
      "members": [
        {
          "type": {
            "kind": "handle",
            "obj_type": 0,
            "subtype": "handle",
            "rights": 2147483648,
            "nullable": false,
            "type_shape_v1": {
              "inline_size": 4,
              "alignment": 4,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": false,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 4,
              "alignment": 4,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": false,
              "has_flexible_envelope": false
            }
          },
          "name": "handle",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 40,
            "column": 9,
            "length": 6
          },
          "field_shape_v1": {
            "offset": 0,
            "padding": 4
          },
          "field_shape_v2": {
            "offset": 0,
            "padding": 4
          }
        }
      ],
      "resource": true,
      "type_shape_v1": {
        "inline_size": 8,
        "alignment": 8,
        "depth": 0,
        "max_handles": 1,
        "max_out_of_line": 0,
        "has_padding": true,
        "has_flexible_envelope": false
      },
      "type_shape_v2": {
        "inline_size": 8,
        "alignment": 8,
        "depth": 0,
        "max_handles": 1,
        "max_out_of_line": 0,
        "has_padding": true,
        "has_flexible_envelope": false
      }
    },
    {
      "name": "fidl.examples.echo/EchoEchoHandleTopResponse",
      "naming_context": [
        "Echo",
        "EchoHandle",
        "Response"
      ],
      "location": {
        "filename": "fidlbolt.fidl",
        "line": 41,
        "column": 12,
        "length": 49
      },
      "members": [
        {
          "type": {
            "kind": "handle",
            "obj_type": 0,
            "subtype": "handle",
            "rights": 2147483648,
            "nullable": false,
            "type_shape_v1": {
              "inline_size": 4,
              "alignment": 4,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": false,
              "has_flexible_envelope": false
            },
            "type_shape_v2": {
              "inline_size": 4,
              "alignment": 4,
              "depth": 0,
              "max_handles": 1,
              "max_out_of_line": 0,
              "has_padding": false,
              "has_flexible_envelope": false
            }
          },
          "name": "handle",
          "location": {
            "filename": "fidlbolt.fidl",
            "line": 42,
            "column": 9,
            "length": 6
          },
          "field_shape_v1": {
            "offset": 0,
            "padding": 4
          },
          "field_shape_v2": {
            "offset": 0,
            "padding": 4
          }
        }
      ],
      "resource": true,
      "type_shape_v1": {
        "inline_size": 8,
        "alignment": 8,
        "depth": 0,
        "max_handles": 1,
        "max_out_of_line": 0,
        "has_padding": true,
        "has_flexible_envelope": false
      },
      "type_shape_v2": {
        "inline_size": 8,
        "alignment": 8,
        "depth": 0,
        "max_handles": 1,
        "max_out_of_line": 0,
        "has_padding": true,
        "has_flexible_envelope": false
      }
    }
  ],
  "external_struct_declarations": [],
  "table_declarations": [],
  "union_declarations": [],
  "type_alias_declarations": [],
  "declaration_order": [
    "fidl.examples.echo/EchoEchoHandleTopResponse",
    "fidl.examples.echo/EchoEchoHandleRequest",
    "fidl.examples.echo/EchoEchoStringTopResponse",
    "fidl.examples.echo/EchoEchoStringRequest",
    "fidl.examples.echo/Echo"
  ],
  "declarations": {
    "fidl.examples.echo/Echo": "protocol",
    "fidl.examples.echo/EchoEchoStringRequest": "struct",
    "fidl.examples.echo/EchoEchoStringTopResponse": "struct",
    "fidl.examples.echo/EchoEchoHandleRequest": "struct",
    "fidl.examples.echo/EchoEchoHandleTopResponse": "struct"
  }
}
)";

static fidl_codec::LibraryLoader* test_library_loader = nullptr;

fidl_codec::LibraryLoader* GetTestLibraryLoader() {
  if (test_library_loader == nullptr) {
    test_library_loader = new fidl_codec::LibraryLoader();
    fidl_codec::LibraryReadError err;
    test_library_loader->AddContent(echo_service, &err);
  }
  return test_library_loader;
}
