1#!/usr/local/bin/python3.8
2
3# Copyright 2012. Jurko Gospodnetic
4# Distributed under the Boost Software License, Version 1.0.
5# (See accompanying file LICENSE_1_0.txt or copy at
6# http://www.boost.org/LICENSE_1_0.txt)
7
8# This tests the SPLIT_BY_CHARACTERS rule.
9
10import BoostBuild
11
12def test_invalid(params, expected_error_line):
13    t = BoostBuild.Tester(pass_toolset=0)
14    t.write("file.jam", "SPLIT_BY_CHARACTERS %s ;" % params)
15    t.run_build_system(["-ffile.jam"], status=1)
16    t.expect_output_lines("[*] %s" % expected_error_line)
17    t.cleanup()
18
19def test_valid():
20    t = BoostBuild.Tester(pass_toolset=0)
21    t.write("jamroot.jam", """\
22import assert ;
23
24assert.result FooBarBaz : SPLIT_BY_CHARACTERS FooBarBaz : "" ;
25assert.result FooBarBaz : SPLIT_BY_CHARACTERS FooBarBaz : x ;
26assert.result FooBa Baz : SPLIT_BY_CHARACTERS FooBarBaz : r ;
27assert.result FooBa Baz : SPLIT_BY_CHARACTERS FooBarBaz : rr ;
28assert.result FooBa Baz : SPLIT_BY_CHARACTERS FooBarBaz : rrr ;
29assert.result FooB rB z : SPLIT_BY_CHARACTERS FooBarBaz : a ;
30assert.result FooB B z : SPLIT_BY_CHARACTERS FooBarBaz : ar ;
31assert.result ooBarBaz : SPLIT_BY_CHARACTERS FooBarBaz : F ;
32assert.result FooBarBa : SPLIT_BY_CHARACTERS FooBarBaz : z ;
33assert.result ooBarBa : SPLIT_BY_CHARACTERS FooBarBaz : Fz ;
34assert.result F B rB z : SPLIT_BY_CHARACTERS FooBarBaz : oa ;
35assert.result Alib b : SPLIT_BY_CHARACTERS Alibaba : oa ;
36assert.result libaba : SPLIT_BY_CHARACTERS Alibaba : oA ;
37assert.result : SPLIT_BY_CHARACTERS FooBarBaz : FooBarBaz ;
38assert.result : SPLIT_BY_CHARACTERS FooBarBaz : FoBarz ;
39
40# Questionable results - should they return an empty string or an empty list?
41assert.result : SPLIT_BY_CHARACTERS "" : "" ;
42assert.result : SPLIT_BY_CHARACTERS "" : x ;
43assert.result : SPLIT_BY_CHARACTERS "" : r ;
44assert.result : SPLIT_BY_CHARACTERS "" : rr ;
45assert.result : SPLIT_BY_CHARACTERS "" : rrr ;
46assert.result : SPLIT_BY_CHARACTERS "" : oa ;
47""")
48    t.run_build_system()
49    t.cleanup()
50
51test_invalid("", "missing argument string")
52test_invalid("Foo", "missing argument delimiters")
53test_invalid(": Bar", "missing argument string")
54test_invalid("a : b : c", "extra argument c")
55test_invalid("a b : c", "extra argument b")
56test_invalid("a : b c", "extra argument c")
57test_valid()
58