diff options
author | starkos <none@none> | 2010-02-18 01:11:25 +0300 |
---|---|---|
committer | starkos <none@none> | 2010-02-18 01:11:25 +0300 |
commit | 3eb990b6097e1e11e34fec82e5a7964989767e3a (patch) | |
tree | 44e747c4e321418e4cec31c47e6af1701576c937 /tests/base | |
parent | 8169e38aa1328019ab8f212d442c75e5fb7a08b0 (diff) |
Patch 2936443: Expose configuration terms to scripts (Laurent Humbertclaude)
Diffstat (limited to 'tests/base')
-rw-r--r-- | tests/base/test_api.lua | 333 | ||||
-rw-r--r-- | tests/base/test_table.lua | 57 |
2 files changed, 390 insertions, 0 deletions
diff --git a/tests/base/test_api.lua b/tests/base/test_api.lua new file mode 100644 index 0000000..a214337 --- /dev/null +++ b/tests/base/test_api.lua @@ -0,0 +1,333 @@ +-- +-- tests/base/test_api.lua +-- Automated test suite for the project API support functions. +-- Copyright (c) 2008-2010 Jason Perkins and the Premake project +-- + + T.api = { } + local suite = T.api + + local sln + function suite.setup() + sln = solution "MySolution" + end + + +-- +-- premake.getobject() tests +-- + + function suite.getobject_RaisesError_OnNoContainer() + premake.CurrentContainer = nil + c, err = premake.getobject("container") + test.istrue(c == nil) + test.isequal("no active solution or project", err) + end + + function suite.getobject_RaisesError_OnNoActiveSolution() + premake.CurrentContainer = { } + c, err = premake.getobject("solution") + test.istrue(c == nil) + test.isequal("no active solution", err) + end + + function suite.getobject_RaisesError_OnNoActiveConfig() + premake.CurrentConfiguration = nil + c, err = premake.getobject("config") + test.istrue(c == nil) + test.isequal("no active solution, project, or configuration", err) + end + + +-- +-- premake.setarray() tests +-- + + function suite.setarray_Inserts_OnStringValue() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = { } + premake.setarray("config", "myfield", "hello") + test.isequal("hello", premake.CurrentConfiguration.myfield[1]) + end + + function suite.setarray_Inserts_OnTableValue() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = { } + premake.setarray("config", "myfield", { "hello", "goodbye" }) + test.isequal("hello", premake.CurrentConfiguration.myfield[1]) + test.isequal("goodbye", premake.CurrentConfiguration.myfield[2]) + end + + function suite.setarray_Appends_OnNewValues() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = { "hello" } + premake.setarray("config", "myfield", "goodbye") + test.isequal("hello", premake.CurrentConfiguration.myfield[1]) + test.isequal("goodbye", premake.CurrentConfiguration.myfield[2]) + end + + function suite.setarray_FlattensTables() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = { } + premake.setarray("config", "myfield", { {"hello"}, {"goodbye"} }) + test.isequal("hello", premake.CurrentConfiguration.myfield[1]) + test.isequal("goodbye", premake.CurrentConfiguration.myfield[2]) + end + + function suite.setarray_RaisesError_OnInvalidValue() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = { } + ok, err = pcall(function () premake.setarray("config", "myfield", "bad", { "Good", "Better", "Best" }) end) + test.isfalse(ok) + end + + function suite.setarray_CorrectsCase_OnConstrainedValue() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = { } + premake.setarray("config", "myfield", "better", { "Good", "Better", "Best" }) + test.isequal("Better", premake.CurrentConfiguration.myfield[1]) + end + + + +-- +-- premake.setstring() tests +-- + + function suite.setstring_Sets_OnNewProperty() + premake.CurrentConfiguration = { } + premake.setstring("config", "myfield", "hello") + test.isequal("hello", premake.CurrentConfiguration.myfield) + end + + function suite.setstring_Overwrites_OnExistingProperty() + premake.CurrentConfiguration = { } + premake.CurrentConfiguration.myfield = "hello" + premake.setstring("config", "myfield", "goodbye") + test.isequal("goodbye", premake.CurrentConfiguration.myfield) + end + + function suite.setstring_RaisesError_OnInvalidValue() + premake.CurrentConfiguration = { } + ok, err = pcall(function () premake.setstring("config", "myfield", "bad", { "Good", "Better", "Best" }) end) + test.isfalse(ok) + end + + function suite.setstring_CorrectsCase_OnConstrainedValue() + premake.CurrentConfiguration = { } + premake.setstring("config", "myfield", "better", { "Good", "Better", "Best" }) + test.isequal("Better", premake.CurrentConfiguration.myfield) + end + + +-- +-- solution() tests +-- + + function suite.solution_SetsCurrentContainer_OnName() + test.istrue(sln == premake.CurrentContainer) + end + + function suite.solution_CreatesNewObject_OnNewName() + solution "MySolution2" + test.isfalse(sln == premake.CurrentContainer) + end + + function suite.solution_ReturnsPrevious_OnExistingName() + solution "MySolution2" + local sln2 = solution "MySolution" + test.istrue(sln == sln2) + end + + function suite.solution_SetsCurrentContainer_OnExistingName() + solution "MySolution2" + solution "MySolution" + test.istrue(sln == premake.CurrentContainer) + end + + function suite.solution_ReturnsNil_OnNoActiveSolutionAndNoName() + premake.CurrentContainer = nil + test.isnil(solution()) + end + + function suite.solution_ReturnsCurrentSolution_OnActiveSolutionAndNoName() + test.istrue(sln == solution()) + end + + function suite.solution_ReturnsCurrentSolution_OnActiveProjectAndNoName() + project "MyProject" + test.istrue(sln == solution()) + end + + function suite.solution_LeavesProjectActive_OnActiveProjectAndNoName() + local prj = project "MyProject" + solution() + test.istrue(prj == premake.CurrentContainer) + end + + function suite.solution_LeavesConfigActive_OnActiveSolutionAndNoName() + local cfg = configuration "windows" + solution() + test.istrue(cfg == premake.CurrentConfiguration) + end + + function suite.solution_LeavesConfigActive_OnActiveProjectAndNoName() + project "MyProject" + local cfg = configuration "windows" + solution() + test.istrue(cfg == premake.CurrentConfiguration) + end + + function suite.solution_SetsName_OnNewName() + test.isequal("MySolution", sln.name) + end + + function suite.solution_AddsNewConfig_OnNewName() + test.istrue(#sln.blocks == 1) + end + + function suite.solution_AddsNewConfig_OnName() + local num = #sln.blocks + solution "MySolution" + test.istrue(#sln.blocks == num + 1) + end + + + +-- +-- configuration() tests +-- + + function suite.configuration_RaisesError_OnNoContainer() + premake.CurrentContainer = nil + local fn = function() configuration{"Debug"} end + ok, err = pcall(fn) + test.isfalse(ok) + end + + function suite.configuration_SetsCurrentConfiguration_OnKeywords() + local cfg = configuration {"Debug"} + test.istrue(premake.CurrentConfiguration == cfg) + end + + function suite.configuration_AddsToContainer_OnKeywords() + local cfg = configuration {"Debug"} + test.istrue(cfg == sln.blocks[#sln.blocks]) + end + + function suite.configuration_ReturnsCurrent_OnNoKeywords() + local cfg = configuration() + test.istrue(cfg == sln.blocks[1]) + end + + function suite.configuration_SetsTerms() + local cfg = configuration {"aa", "bb"} + test.isequal({"aa", "bb"}, cfg.terms) + end + + function suite.configuration_SetsTermsWithNestedTables() + local cfg = configuration { {"aa", "bb"}, "cc" } + test.isequal({"aa", "bb", "cc"}, cfg.terms) + end + + function suite.configuration_CanReuseTerms() + local cfg = configuration { "aa", "bb" } + local cfg2 = configuration { cfg.terms, "cc" } + test.isequal({"aa", "bb", "cc"}, cfg2.terms) + end + + +-- +-- project() tests +-- + + function suite.project_RaisesError_OnNoSolution() + premake.CurrentContainer = nil + local fn = function() project("MyProject") end + ok, err = pcall(fn) + test.isfalse(ok) + end + + function suite.project_SetsCurrentContainer_OnName() + local prj = project "MyProject" + test.istrue(prj == premake.CurrentContainer) + end + + function suite.project_CreatesNewObject_OnNewName() + local prj = project "MyProject" + local pr2 = project "MyProject2" + test.isfalse(prj == premake.CurrentContainer) + end + + function suite.project_AddsToSolution_OnNewName() + local prj = project "MyProject" + test.istrue(prj == sln.projects[1]) + end + + function suite.project_ReturnsPrevious_OnExistingName() + local prj = project "MyProject" + local pr2 = project "MyProject2" + local pr3 = project "MyProject" + test.istrue(prj == pr3) + end + + function suite.project_SetsCurrentContainer_OnExistingName() + local prj = project "MyProject" + local pr2 = project "MyProject2" + local pr3 = project "MyProject" + test.istrue(prj == premake.CurrentContainer) + end + + function suite.project_ReturnsNil_OnNoActiveProjectAndNoName() + test.isnil(project()) + end + + function suite.project_ReturnsCurrentProject_OnActiveProjectAndNoName() + local prj = project "MyProject" + test.istrue(prj == project()) + end + + function suite.project_LeavesProjectActive_OnActiveProjectAndNoName() + local prj = project "MyProject" + project() + test.istrue(prj == premake.CurrentContainer) + end + + function suite.project_LeavesConfigActive_OnActiveProjectAndNoName() + local prj = project "MyProject" + local cfg = configuration "Windows" + project() + test.istrue(cfg == premake.CurrentConfiguration) + end + + function suite.project_SetsName_OnNewName() + prj = project("MyProject") + test.isequal("MyProject", prj.name) + end + + function suite.project_SetsSolution_OnNewName() + prj = project("MyProject") + test.istrue(sln == prj.solution) + end + + function suite.project_SetsConfiguration() + prj = project("MyProject") + test.istrue(premake.CurrentConfiguration == prj.blocks[1]) + end + + function suite.project_SetsUUID() + local prj = project "MyProject" + test.istrue(prj.uuid) + end + + + +-- +-- uuid() tests +-- + + function suite.uuid_makes_uppercase() + premake.CurrentContainer = {} + uuid "7CBB5FC2-7449-497f-947F-129C5129B1FB" + test.isequal(premake.CurrentContainer.uuid, "7CBB5FC2-7449-497F-947F-129C5129B1FB") + end diff --git a/tests/base/test_table.lua b/tests/base/test_table.lua new file mode 100644 index 0000000..2bf26ed --- /dev/null +++ b/tests/base/test_table.lua @@ -0,0 +1,57 @@ +-- +-- tests/base/test_table.lua +-- Automated test suite for the new table functions. +-- Copyright (c) 2008-2010 Jason Perkins and the Premake project +-- + + + T.table = { } + local suite = T.table + + +-- +-- table.contains() tests +-- + + function suite.contains_OnContained() + t = { "one", "two", "three" } + test.istrue( table.contains(t, "two") ) + end + + function suite.contains_OnNotContained() + t = { "one", "two", "three" } + test.isfalse( table.contains(t, "four") ) + end + + +-- +-- table.flatten() tests +-- + + function suite.flatten_OnMixedValues() + t = { "a", { "b", "c" }, "d" } + test.isequal({ "a", "b", "c", "d" }, table.flatten(t)) + end + + +-- +-- table.implode() tests +-- + + function suite.implode() + t = { "one", "two", "three", "four" } + test.isequal("[one], [two], [three], [four]", table.implode(t, "[", "]", ", ")) + end + + +-- +-- table.isempty() tests +-- + + function suite.isempty_ReturnsTrueOnEmpty() + test.istrue(table.isempty({})) + end + + function suite.isempty_ReturnsFalseOnNotEmpty() + test.isfalse(table.isempty({ 1 })) + end |