# 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"')