aboutsummaryrefslogtreecommitdiff
path: root/unit-tests/function/driver.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'unit-tests/function/driver.cxx')
-rw-r--r--unit-tests/function/driver.cxx131
1 files changed, 0 insertions, 131 deletions
diff --git a/unit-tests/function/driver.cxx b/unit-tests/function/driver.cxx
deleted file mode 100644
index 0e128e7..0000000
--- a/unit-tests/function/driver.cxx
+++ /dev/null
@@ -1,131 +0,0 @@
-// file : unit-tests/function/driver.cxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#include <iostream>
-
-#include <build2/types.hxx>
-#include <build2/utility.hxx>
-
-#include <build2/parser.hxx>
-#include <build2/context.hxx>
-#include <build2/function.hxx>
-#include <build2/variable.hxx>
-#include <build2/diagnostics.hxx>
-
-using namespace std;
-
-namespace build2
-{
- static const optional<const value_type*> arg_bool[1] =
- {
- &value_traits<bool>::value_type
- };
-
- static dir_path
- scoped (const scope*, dir_path d)
- {
- return d;
- }
-
- static void
- scoped_void (const scope*, dir_path)
- {
- }
-
- int
- main (int, char* argv[])
- {
- init (argv[0], 1); // Fake build system driver, default verbosity.
- reset (strings ()); // No command line variables.
-
- function_family f ("dummy");
-
- f["fail"] = []() {fail << "failed" << endf;};
- f["fail_arg"] = [](names a) {return convert<uint64_t> (move (a[0]));};
-
- f["nullable"] = [](names* a) {return a == nullptr;};
- f["optional"] = [](optional<names> a) {return !a;};
-
- f["dummy0"] = []() {return "abc";};
- f["dummy1"] = [](string s) {return s;};
- f["dummy2"] = [](uint64_t x, uint64_t y) {return x + y;};
-
- f["ambig"] = [](names a, optional<string>) {return a;};
- f["ambig"] = [](names a, optional<uint64_t>) {return a;};
-
- f["reverse"] = [](names a) {return a;};
-
- f["scoped"] = [](const scope*, names a) {return a;};
- f["scoped_void"] = [](const scope*, names) {};
- f["scoped"] = &scoped;
- f["scoped_void"] = &scoped_void;
-
- f[".qual"] = []() {return "abc";};
-
- f[".length"] = &path::size; // Member function.
- f[".type"] = &name::type; // Data member.
-
- f[".abs"] = [](dir_path d) {return d.absolute ();};
-
- // Variadic function with first required argument of type bool. Returns
- // number of arguments passed.
- //
- functions.insert (
- "variadic",
- function_overload (
- nullptr,
- 1,
- function_overload::arg_variadic,
- function_overload::types (arg_bool, 1),
- [] (const scope*, vector_view<value> args, const function_overload&)
- {
- return value (static_cast<uint64_t> (args.size ()));
- }));
-
- // Dump arguments.
- //
- functions.insert (
- "dump",
- function_overload (
- nullptr,
- 0,
- function_overload::arg_variadic,
- function_overload::types (),
- [] (const scope*, vector_view<value> args, const function_overload&)
- {
- for (value& a: args)
- {
- if (a.null)
- cout << "[null]";
- else if (!a.empty ())
- {
- names storage;
- cout << reverse (a, storage);
- }
- cout << endl;
- }
- return value (nullptr);
- }));
-
- try
- {
- scope& s (*scope::global_);
-
- parser p;
- p.parse_buildfile (cin, path ("buildfile"), s, s);
- }
- catch (const failed&)
- {
- return 1;
- }
-
- return 0;
- }
-}
-
-int
-main (int argc, char* argv[])
-{
- return build2::main (argc, argv);
-}