diff options
Diffstat (limited to 'libbackend-elements/tests/indentation')
-rw-r--r-- | libbackend-elements/tests/indentation/cxx/driver.cxx | 105 | ||||
-rw-r--r-- | libbackend-elements/tests/indentation/cxx/makefile | 57 | ||||
-rw-r--r-- | libbackend-elements/tests/indentation/cxx/output.cxx | 75 | ||||
-rw-r--r-- | libbackend-elements/tests/indentation/makefile | 18 |
4 files changed, 255 insertions, 0 deletions
diff --git a/libbackend-elements/tests/indentation/cxx/driver.cxx b/libbackend-elements/tests/indentation/cxx/driver.cxx new file mode 100644 index 0000000..adfc2fc --- /dev/null +++ b/libbackend-elements/tests/indentation/cxx/driver.cxx @@ -0,0 +1,105 @@ +// file : tests/indentation/cxx/driver.cxx +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2006-2010 Boris Kolpackov +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#include <iostream> + +#include <cult/types.hxx> + +#include <backend-elements/indentation/cxx.hxx> +#include <backend-elements/indentation/clip.hxx> + +using namespace Cult::Types; +using namespace BackendElements::Indentation; + +using std::cout; +using std::endl; + +Int +main () +{ + std::ostream& os (cout); + Clip<CXX, Char> clip (os); + + os << "if (true)" + << "{" + << "// Hello there" << endl + << "//" << endl + << "a ();" + << "}" + << "else" + << "{" + << "b ();" + << "}"; + + os << "if (false)" + << "{" + << "if (true)" + << "{" + << "// test" << endl + << "}" + << "else" + << "{" + << "// test" << endl + << "b ();" + << "}" + << "}"; + + os << "namespace a" + << "{" + << "void f ();" + << "}" + << "#if defined(__HP_aCC) && __HP_aCC <= 39999" << endl + << "#include <foo.h>" << endl + << "#endif" << endl + << endl + << "namespace b" + << "{" + << "void f ();" + << "}"; + + // Test do-while handling. + // + os << "do" << endl + << "f ();" + << "while (false);" + << endl; + + os << "do" + << "{" + << "f ();" + << "}" + << "while (false);" + << endl; + + os << "do" + << "{" + << "if (f ())" + << "{" + << "g ();" + << "}" + << "}" + << "while (false);" + << endl; + + os << "do" + << "{" + << "do" << endl + << "f ();" + << "while (false);" + << "}" + << "while (false);" + << endl; + + os << "do" + << "{" + << "do" + << "{" + << "f ();" + << "}" + << "while (false);" + << "}" + << "while (false);" + << endl; +} diff --git a/libbackend-elements/tests/indentation/cxx/makefile b/libbackend-elements/tests/indentation/cxx/makefile new file mode 100644 index 0000000..ff2e15d --- /dev/null +++ b/libbackend-elements/tests/indentation/cxx/makefile @@ -0,0 +1,57 @@ +# file : tests/indentation/cxx/makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2006-2010 Boris Kolpackov +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make + +cxx_tun := driver.cxx +cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) +cxx_od := $(cxx_obj:.o=.o.d) + +#be.l := $(out_root)/backend-elements/backend-elements.l +be.l.cpp-options := $(out_root)/backend-elements/backend-elements.l.cpp-options + +driver := $(out_base)/driver +test := $(out_base)/.test +clean := $(out_base)/.clean + + +# Build. +# +$(driver): $(cxx_obj) #$(be.l) + +$(cxx_obj) $(cxx_od): $(be.l.cpp-options) + +$(call include-dep,$(cxx_od)) + + +# Convenience alias for default target. +# +$(out_base)/: $(driver) + + +# Test. +# +$(test): driver := $(driver) +$(test): $(driver) $(src_base)/output.cxx + $(driver) | diff -u $(src_base)/output.cxx - + + +# Clean. +# +$(clean): $(driver).o.clean \ + $(addsuffix .cxx.clean,$(cxx_obj)) \ + $(addsuffix .cxx.clean,$(cxx_od)) + + +# How to. +# +$(call include,$(bld_root)/cxx/o-e.make) +$(call include,$(bld_root)/cxx/cxx-o.make) +$(call include,$(bld_root)/cxx/cxx-d.make) + + +# Dependencies. +# +$(call import,$(src_root)/backend-elements/makefile) diff --git a/libbackend-elements/tests/indentation/cxx/output.cxx b/libbackend-elements/tests/indentation/cxx/output.cxx new file mode 100644 index 0000000..1a22bc7 --- /dev/null +++ b/libbackend-elements/tests/indentation/cxx/output.cxx @@ -0,0 +1,75 @@ +if (true) +{ + // Hello there + // + a (); +} +else +{ + b (); +} + +if (false) +{ + if (true) + { + // test + } + else + { + // test + b (); + } +} + +namespace a +{ + void f (); +} + +#if defined(__HP_aCC) && __HP_aCC <= 39999 +#include <foo.h> +#endif + +namespace b +{ + void f (); +} + +do + f (); +while (false); + +do +{ + f (); +} +while (false); + +do +{ + if (f ()) + { + g (); + } +} +while (false); + +do +{ + do + f (); + while (false); +} +while (false); + +do +{ + do + { + f (); + } + while (false); +} +while (false); + diff --git a/libbackend-elements/tests/indentation/makefile b/libbackend-elements/tests/indentation/makefile new file mode 100644 index 0000000..debbeec --- /dev/null +++ b/libbackend-elements/tests/indentation/makefile @@ -0,0 +1,18 @@ +# file : tests/indentation/makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2006-2010 Boris Kolpackov +# license : GNU GPL v2; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make + +tests := cxx + +default := $(out_base)/ +test := $(out_base)/.test +clean := $(out_base)/.clean + +$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests))) +$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests))) +$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests))) + +$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile)) |