# 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, )