| # Copyright 2022 Google Inc. All rights reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| from flatc_test import * | |
| class CppTests: | |
| def Flatten(self): | |
| # Generate just foo with a "flatten" import of bar. | |
| flatc(["--cpp", "foo.fbs"]) | |
| # Foo should be generated in place and include bar flatten | |
| assert_file_and_contents("foo_generated.h", '#include "bar_generated.h"') | |
| def FlattenAbsolutePath(self): | |
| # Generate just foo with a "flatten" import of bar. | |
| flatc(["--cpp", make_absolute("foo.fbs")]) | |
| # Foo should be generated in place and include bar flatten | |
| assert_file_and_contents("foo_generated.h", '#include "bar_generated.h"') | |
| def FlattenSubDirectory(self): | |
| # Generate just foo with a "flatten" import of bar. | |
| flatc(["--cpp", "bar/bar.fbs"]) | |
| # Bar should be generated in place and include baz | |
| assert_file_and_contents("bar_generated.h", '#include "baz_generated.h"') | |
| def FlattenOutPath(self): | |
| # Generate just foo with a "flatten" import of bar. | |
| flatc(["--cpp", "-o", ".tmp", "foo.fbs"]) | |
| # Foo should be generated in the out path and include bar flatten to the out path. | |
| assert_file_and_contents( | |
| ".tmp/foo_generated.h", '#include "bar_generated.h"' | |
| ) | |
| def FlattenOutPathSuperDirectory(self): | |
| # Generate just foo with a "flatten" import of bar. | |
| flatc(["--cpp", "-o", "../.tmp", "foo.fbs"]) | |
| # Foo should be generated in the out path and include bar flatten to the out path. | |
| assert_file_and_contents( | |
| "../.tmp/foo_generated.h", '#include "bar_generated.h"' | |
| ) | |
| def FlattenOutPathSubDirectory(self): | |
| # Generate just foo with a "flatten" import of bar. | |
| flatc(["--cpp", "-o", ".tmp", "bar/bar.fbs"]) | |
| # Bar should be generated in the out path and include baz flatten to the out path. | |
| assert_file_and_contents( | |
| ".tmp/bar_generated.h", '#include "baz_generated.h"' | |
| ) | |
| def KeepPrefix(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", "foo.fbs"]) | |
| assert_file_and_contents( | |
| "foo_generated.h", '#include "bar/bar_generated.h"' | |
| ) | |
| def KeepPrefixAbsolutePath(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", make_absolute("foo.fbs")]) | |
| assert_file_and_contents( | |
| "foo_generated.h", '#include "bar/bar_generated.h"' | |
| ) | |
| def KeepPrefixSubDirectory(self): | |
| # Generate with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", "bar/bar.fbs"]) | |
| assert_file_and_contents( | |
| "bar_generated.h", '#include "baz/baz_generated.h"' | |
| ) | |
| def KeepPrefixOutPath(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", "-o", ".tmp", "foo.fbs"]) | |
| assert_file_and_contents( | |
| ".tmp/foo_generated.h", | |
| '#include "bar/bar_generated.h"', | |
| ) | |
| def KeepPrefixOutPathSubDirectory(self): | |
| # Generate with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", "-o", ".tmp", "bar/bar.fbs"]) | |
| assert_file_and_contents( | |
| ".tmp/bar_generated.h", '#include "baz/baz_generated.h"' | |
| ) | |
| def IncludePrefix(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--include-prefix", "test", "foo.fbs"]) | |
| assert_file_and_contents( | |
| "foo_generated.h", '#include "test/bar_generated.h"' | |
| ) | |
| def IncludePrefixAbolutePath(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--include-prefix", "test", make_absolute("foo.fbs")]) | |
| assert_file_and_contents( | |
| "foo_generated.h", '#include "test/bar_generated.h"' | |
| ) | |
| def IncludePrefixSubDirectory(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--include-prefix", "test", "bar/bar.fbs"]) | |
| assert_file_and_contents( | |
| "bar_generated.h", '#include "test/baz_generated.h"' | |
| ) | |
| def IncludePrefixOutPath(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--include-prefix", "test", "-o", ".tmp", "foo.fbs"]) | |
| assert_file_and_contents( | |
| ".tmp/foo_generated.h", '#include "test/bar_generated.h"' | |
| ) | |
| def IncludePrefixOutPathSubDirectory(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--include-prefix", "test", "-o", ".tmp", "bar/bar.fbs"]) | |
| assert_file_and_contents( | |
| ".tmp/bar_generated.h", '#include "test/baz_generated.h"' | |
| ) | |
| def KeepPrefixIncludePrefix(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", "--include-prefix", "test", "foo.fbs"]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| "foo_generated.h", '#include "test/bar/bar_generated.h"' | |
| ) | |
| def KeepPrefixIncludePrefixAbsolutePath(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc([ | |
| "--cpp", | |
| "--keep-prefix", | |
| "--include-prefix", | |
| "test", | |
| make_absolute("foo.fbs"), | |
| ]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| "foo_generated.h", '#include "test/bar/bar_generated.h"' | |
| ) | |
| def KeepPrefixIncludePrefixSubDirectory(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc(["--cpp", "--keep-prefix", "--include-prefix", "test", "bar/bar.fbs"]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| "bar_generated.h", '#include "test/baz/baz_generated.h"' | |
| ) | |
| def KeepPrefixIncludePrefixOutPathSubDirectory(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc([ | |
| "--cpp", | |
| "--keep-prefix", | |
| "--include-prefix", | |
| "test", | |
| "-o", | |
| ".tmp", | |
| "bar/bar.fbs", | |
| ]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| ".tmp/bar_generated.h", '#include "test/baz/baz_generated.h"' | |
| ) | |
| def KeepPrefixIncludePrefixOutPathSuperDirectory(self): | |
| # Generate just foo with the import of bar keeping the prefix of where it is located. | |
| flatc([ | |
| "--cpp", | |
| "--keep-prefix", | |
| "--include-prefix", | |
| "test", | |
| "-o", | |
| "../.tmp", | |
| "bar/bar.fbs", | |
| ]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| "../.tmp/bar_generated.h", '#include "test/baz/baz_generated.h"' | |
| ) | |
| def KeepPrefixIncludePrefixoutPathAbsoluePaths_SuperDirectoryReference(self): | |
| # Generate bar_with_foo that references a type in a super directory. | |
| flatc([ | |
| "--cpp", | |
| "--keep-prefix", | |
| "--include-prefix", | |
| "generated", | |
| "-I", | |
| str(script_path.absolute()), | |
| "-o", | |
| str(Path(script_path, ".tmp").absolute()), | |
| str(Path(script_path, "bar/bar_with_foo.fbs").absolute()), | |
| ]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| ".tmp/bar_with_foo_generated.h", | |
| [ | |
| '#include "generated/baz/baz_generated.h"', | |
| '#include "generated/foo_generated.h"', | |
| ], | |
| ) | |
| def KeepPrefixIncludePrefixoutPath_SuperDirectoryReference(self): | |
| # Generate bar_with_foo that references a type in a super directory. | |
| flatc([ | |
| "--cpp", | |
| "--keep-prefix", | |
| "--include-prefix", | |
| "generated", | |
| "-I", | |
| "./", | |
| "-o", | |
| ".tmp", | |
| "bar/bar_with_foo.fbs", | |
| ]) | |
| # The include prefix should come first, with the kept prefix next. | |
| assert_file_and_contents( | |
| ".tmp/bar_with_foo_generated.h", | |
| [ | |
| '#include "generated/baz/baz_generated.h"', | |
| '#include "generated/foo_generated.h"', | |
| ], | |
| unlink=False, | |
| ) |