#include #include #include "rbx/test/DataModelFixture.h" #include "V8DataModel/DataModel.h" #include "V8DataModel/Workspace.h" using namespace RBX; void dataModelSetup(DataModelFixture& dataModel) { DataModel::LegacyLock lock(dataModel.dataModel.get(), DataModelJob::Write); dataModel->getWorkspace()->createTerrain(); } BOOST_AUTO_TEST_SUITE( ClusterDeprecatedProperty ) BOOST_AUTO_TEST_CASE( AnchoredCannotBeSet ) { DataModelFixture dataModel; dataModelSetup(dataModel); std::auto_ptr resultTuple; resultTuple = dataModel.execute("return Workspace.Terrain.Anchored"); BOOST_REQUIRE_EQUAL(true, resultTuple->at(0).get()); dataModel.execute("Workspace.Terrain.Anchored = false"); resultTuple = dataModel.execute("return Workspace.Terrain.Anchored"); BOOST_REQUIRE_EQUAL(true, resultTuple->at(0).get()); } BOOST_AUTO_TEST_CASE( CFrameAndPositionCannotBeSet ) { DataModelFixture dataModel; dataModelSetup(dataModel); Vector3 zeroVector = Vector3(); CoordinateFrame zeroFrame(zeroVector); std::auto_ptr resultTuple; resultTuple = dataModel.execute("return Workspace.Terrain.CFrame"); BOOST_CHECK(zeroFrame == resultTuple->at(0).get()); resultTuple = dataModel.execute("return Workspace.Terrain.Position"); BOOST_REQUIRE_EQUAL(zeroVector, resultTuple->at(0).get()); dataModel.execute("Workspace.Terrain.CFrame = CFrame.new(11,12,13,1,2,3,4,5,6,7,8,9)"); resultTuple = dataModel.execute("return Workspace.Terrain.CFrame"); BOOST_REQUIRE(zeroFrame == resultTuple->at(0).get()); resultTuple = dataModel.execute("return Workspace.Terrain.Position"); BOOST_REQUIRE_EQUAL(zeroVector, resultTuple->at(0).get()); } BOOST_AUTO_TEST_CASE( NameCannotBeSet ) { DataModelFixture dataModel; dataModelSetup(dataModel); std::auto_ptr resultTuple; resultTuple = dataModel.execute("return Workspace.Terrain.Name"); BOOST_REQUIRE_EQUAL("Terrain", resultTuple->at(0).get()); dataModel.execute("Workspace.Terrain.Name = 'MajelBarrett'"); resultTuple = dataModel.execute("return Workspace.Terrain.Name"); BOOST_REQUIRE_EQUAL("Terrain", resultTuple->at(0).get()); } BOOST_AUTO_TEST_CASE( ParentCannotBeSet ) { DataModelFixture dataModel; dataModelSetup(dataModel); std::auto_ptr resultTuple; resultTuple = dataModel.execute("return Workspace.Terrain.Parent"); BOOST_REQUIRE_EQUAL(dataModel->getWorkspace(), resultTuple->at(0).get >().get()); dataModel.execute("Instance.new('Part', Workspace)"); bool checked = false; try { dataModel.execute("Workspace.Terrain.Parent = Workspace.Part"); } catch (std::runtime_error& e) { BOOST_CHECK_EQUAL("Cannot change Parent of type Terrain", e.what()); checked = true; } BOOST_CHECK(checked); resultTuple = dataModel.execute("return Workspace.Terrain.Parent"); BOOST_REQUIRE_EQUAL(dataModel->getWorkspace(), resultTuple->at(0).get >().get()); } BOOST_AUTO_TEST_CASE( SizeCannotBeSet ) { DataModelFixture dataModel; dataModelSetup(dataModel); Vector3 sizeVector = Vector3(2044, 252, 2044); std::auto_ptr resultTuple; resultTuple = dataModel.execute("return Workspace.Terrain.Size"); BOOST_REQUIRE_EQUAL(sizeVector, resultTuple->at(0).get()); dataModel.execute("Workspace.Terrain.Size = Vector3.new(10,20,30)"); resultTuple = dataModel.execute("return Workspace.Terrain.Size"); BOOST_REQUIRE_EQUAL(sizeVector, resultTuple->at(0).get()); bool checked = false; try { dataModel.execute("Workspace.Terrain:Resize(0, 10)"); } catch (std::runtime_error& e) { BOOST_CHECK_EQUAL("Cannot Resize() Terrain", e.what()); checked = true; } BOOST_CHECK(checked); resultTuple = dataModel.execute("return Workspace.Terrain.Size"); BOOST_REQUIRE_EQUAL(sizeVector, resultTuple->at(0).get()); } BOOST_AUTO_TEST_CASE( LockedCannotBeSet ) { DataModelFixture dataModel; dataModelSetup(dataModel); std::auto_ptr resultTuple; resultTuple = dataModel.execute("return Workspace.Terrain.Locked"); BOOST_REQUIRE_EQUAL(true, resultTuple->at(0).get()); dataModel.execute("Workspace.Terrain.Locked = false"); resultTuple = dataModel.execute("return Workspace.Terrain.Locked"); BOOST_REQUIRE_EQUAL(true, resultTuple->at(0).get()); } BOOST_AUTO_TEST_SUITE_END()