aboutsummaryrefslogtreecommitdiff
path: root/src/light.cpp
Commit message (Expand)AuthorAge
* Fix light overflow of u8 if light is saturated at 255 (#10305)BenjaminRi2020-08-23
* Improve light curve parameter limits and documentation (#9054)Paramat2019-10-24
* Increase upper limit of display_gamma to 10 (#8618)ANAND2019-06-27
* Light curve: Simplify and improve code, fix darkened daytime sky (#7693)Vitaliy2018-09-16
* Update light decoding table size (#6696)Vitaliy2017-12-12
* Light curve: Add and tune mid boost gaussianparamat2017-11-27
* Modernize various files (src/k*, src/l*)Loic Blot2017-08-18
* New lighting curve (#5279)Vitaliy2017-08-17
* Redo light.cpp.Auke Kok2016-12-28
* Change lower limit of display_gamma to 1.0 (linear light)Craig Robbins2015-05-11
* Add display_gamma option for clientCraig Robbins2014-12-31
* Update Copyright YearsSfan52013-02-24
* Change Minetest-c55 to MinetestPilzAdam2013-02-24
* Switch the license to be LGPLv2/later, with small parts still remaining as GP...Perttu Ahola2012-06-05
* Unrelated, but anyway: tune light levels againPerttu Ahola2012-03-27
* Modify light values to work a bit better with non-smooth lightingPerttu Ahola2012-02-05
* Set better visual light levelsPerttu Ahola2012-02-02
* tested out and commented out some new stuff for the terrain generator, to be ...Perttu Ahola2011-04-26
* random code cleaning, shouldn't affect anythingPerttu Ahola2011-02-18
* all kinds of tweaking and fixingPerttu Ahola2011-02-04
* some tweakingPerttu Ahola2011-02-02
* day/night working client sidePerttu Ahola2010-12-19
* before daynight mesh cachePerttu Ahola2010-12-18
* before adding day/night lightingPerttu Ahola2010-12-18
* working nicelyPerttu Ahola2010-12-13
* license stuffPerttu Ahola2010-11-29
* Initial filesPerttu Ahola2010-11-27
PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "test.h" #include "settings.h" #include "noise.h" class TestSettings : public TestBase { public: TestSettings() { TestManager::registerTestModule(this); } const char *getName() { return "TestSettings"; } void runTests(IGameDef *gamedef); void testAllSettings(); static const char *config_text_before; static const char *config_text_after; }; static TestSettings g_test_instance; void TestSettings::runTests(IGameDef *gamedef) { TEST(testAllSettings); } //////////////////////////////////////////////////////////////////////////////// const char *TestSettings::config_text_before = "leet = 1337\n" "leetleet = 13371337\n" "leetleet_neg = -13371337\n" "floaty_thing = 1.1\n" "stringy_thing = asd /( ¤%&(/\" BLÖÄRP\n" "coord = (1, 2, 4.5)\n" " # this is just a comment\n" "this is an invalid line\n" "asdf = {\n" " a = 5\n" " bb = 2.5\n" " ccc = \"\"\"\n" "testy\n" " testa \n" "\"\"\"\n" "\n" "}\n" "blarg = \"\"\" \n" "some multiline text\n" " with leading whitespace!\n" "\"\"\"\n" "np_terrain = 5, 40, (250, 250, 250), 12341, 5, 0.7, 2.4\n" "zoop = true"; const char *TestSettings::config_text_after = "leet = 1337\n" "leetleet = 13371337\n" "leetleet_neg = -13371337\n" "floaty_thing = 1.1\n" "stringy_thing = asd /( ¤%&(/\" BLÖÄRP\n" "coord = (1, 2, 4.5)\n" " # this is just a comment\n" "this is an invalid line\n" "asdf = {\n" " a = 5\n" " bb = 2.5\n" " ccc = \"\"\"\n" "testy\n" " testa \n" "\"\"\"\n" "\n" "}\n" "blarg = \"\"\" \n" "some multiline text\n" " with leading whitespace!\n" "\"\"\"\n" "np_terrain = {\n" " flags = defaults\n" " lacunarity = 2.4\n" " octaves = 6\n" " offset = 3.5\n" " persistence = 0.7\n" " scale = 40\n" " seed = 12341\n" " spread = (250,250,250)\n" "}\n" "zoop = true\n" "coord2 = (1,2,3.3)\n" "floaty_thing_2 = 1.2\n" "groupy_thing = {\n" " animals = cute\n" " num_apples = 4\n" " num_oranges = 53\n" "}\n"; void TestSettings::testAllSettings() { try { Settings s; // Test reading of settings std::istringstream is(config_text_before); s.parseConfigLines(is); UASSERT(s.getS32("leet") == 1337); UASSERT(s.getS16("leetleet") == 32767); UASSERT(s.getS16("leetleet_neg") == -32768); // Not sure if 1.1 is an exact value as a float, but doesn't matter UASSERT(fabs(s.getFloat("floaty_thing") - 1.1) < 0.001); UASSERT(s.get("stringy_thing") == "asd /( ¤%&(/\" BLÖÄRP"); UASSERT(fabs(s.getV3F("coord").X - 1.0) < 0.001); UASSERT(fabs(s.getV3F("coord").Y - 2.0) < 0.001); UASSERT(fabs(s.getV3F("coord").Z - 4.5) < 0.001); // Test the setting of settings too s.setFloat("floaty_thing_2", 1.2); s.setV3F("coord2", v3f(1, 2, 3.3)); UASSERT(s.get("floaty_thing_2").substr(0,3) == "1.2"); UASSERT(fabs(s.getFloat("floaty_thing_2") - 1.2) < 0.001); UASSERT(fabs(s.getV3F("coord2").X - 1.0) < 0.001); UASSERT(fabs(s.getV3F("coord2").Y - 2.0) < 0.001); UASSERT(fabs(s.getV3F("coord2").Z - 3.3) < 0.001); // Test settings groups Settings *group = s.getGroup("asdf"); UASSERT(group != NULL); UASSERT(s.getGroupNoEx("zoop", group) == false); UASSERT(group->getS16("a") == 5); UASSERT(fabs(group->getFloat("bb") - 2.5) < 0.001); Settings *group3 = new Settings; group3->set("cat", "meow"); group3->set("dog", "woof"); Settings *group2 = new Settings; group2->setS16("num_apples", 4); group2->setS16("num_oranges", 53); group2->setGroup("animals", group3); group2->set("animals", "cute"); //destroys group 3 s.setGroup("groupy_thing", group2); // Test set failure conditions UASSERT(s.set("Zoop = Poop\nsome_other_setting", "false") == false); UASSERT(s.set("sneaky", "\"\"\"\njabberwocky = false") == false); UASSERT(s.set("hehe", "asdfasdf\n\"\"\"\nsomething = false") == false); // Test multiline settings UASSERT(group->get("ccc") == "testy\n testa "); UASSERT(s.get("blarg") == "some multiline text\n" " with leading whitespace!"); // Test NoiseParams UASSERT(s.getEntry("np_terrain").is_group == false); NoiseParams np; UASSERT(s.getNoiseParams("np_terrain", np) == true); UASSERT(fabs(np.offset - 5) < 0.001); UASSERT(fabs(np.scale - 40) < 0.001); UASSERT(fabs(np.spread.X - 250) < 0.001); UASSERT(fabs(np.spread.Y - 250) < 0.001); UASSERT(fabs(np.spread.Z - 250) < 0.001); UASSERT(np.seed == 12341); UASSERT(np.octaves == 5); UASSERT(fabs(np.persist - 0.7) < 0.001); np.offset = 3.5; np.octaves = 6; s.setNoiseParams("np_terrain", np); UASSERT(s.getEntry("np_terrain").is_group == true); // Test writing std::ostringstream os(std::ios_base::binary); is.clear(); is.seekg(0); UASSERT(s.updateConfigObject(is, os, "", 0) == true); //printf(">>>> expected config:\n%s\n", TEST_CONFIG_TEXT_AFTER); //printf(">>>> actual config:\n%s\n", os.str().c_str()); UASSERT(os.str() == config_text_after); } catch (SettingNotFoundException &e) { UASSERT(!"Setting not found!"); } }