| #!/usr/bin/python |
| |
| # Copyright (C) Jurko Gospodnetic 2008. |
| # Distributed under the Boost Software License, Version 1.0. (See |
| # accompanying file LICENSE_1_0.txt or copy at |
| # http://www.boost.org/LICENSE_1_0.txt) |
| |
| # Tests for the Boost Jam builtin SORT rule. |
| |
| import BoostBuild |
| |
| |
| ################################################################################ |
| # |
| # testSORTCorrectness() |
| # --------------------- |
| # |
| ################################################################################ |
| |
| def testSORTCorrectness(): |
| """Testing that Boost Jam's SORT builtin rule actually sorts correctly. |
| """ |
| t = BoostBuild.Tester("-f test.jam -d1", pass_toolset=False, |
| use_test_config=False) |
| |
| t.write("test.jam", """ |
| NOCARE all ; |
| source-data = 1 8 9 2 7 3 4 7 1 27 27 9 98 98 1 1 4 5 6 2 3 4 8 1 -2 -2 0 0 0 ; |
| target-data = -2 -2 0 0 0 1 1 1 1 1 2 2 27 27 3 3 4 4 4 5 6 7 7 8 8 9 9 98 98 ; |
| ECHO "starting up" ; |
| sorted-data = [ SORT $(source-data) ] ; |
| ECHO "done" ; |
| if $(sorted-data) != $(target-data) |
| { |
| ECHO "Source :" $(source-data) ; |
| ECHO "Expected :" $(target-data) ; |
| ECHO "SORT returned:" $(sorted-data) ; |
| EXIT "SORT error" : -2 ; |
| } |
| """) |
| |
| t.run_build_system() |
| t.expect_output_line("starting up") |
| t.expect_output_line("done") |
| t.expect_output_line("SORT error", False) |
| |
| t.cleanup() |
| |
| |
| ################################################################################ |
| # |
| # testSORTDuration() |
| # ------------------ |
| # |
| ################################################################################ |
| |
| def testSORTDuration(): |
| """Regression test making sure Boost Jam's SORT builtin rule does not get |
| quadratic behaviour again in this use case. |
| """ |
| t = BoostBuild.Tester("-f test.jam -d1", pass_toolset=False, |
| use_test_config=False) |
| |
| f = open(t.workpath("test.jam"), "w") |
| print >> f, "data = " |
| for i in range(0, 20000): |
| if i % 2 != 0: |
| print >> f, '"aaa"' |
| else: |
| print >> f, '"bbb"' |
| print >> f, """; |
| |
| ECHO "starting up" ; |
| sorted = [ SORT $(data) ] ; |
| ECHO "done" ; |
| NOCARE all ; |
| """ |
| f.close() |
| |
| t.run_build_system(expected_duration=1) |
| t.expect_output_line("starting up") |
| t.expect_output_line("done") |
| |
| t.cleanup() |
| |
| |
| ################################################################################ |
| # |
| # main() |
| # ------ |
| # |
| ################################################################################ |
| |
| testSORTCorrectness() |
| testSORTDuration() |