+
+ // 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() == TEST_CONFIG_TEXT_AFTER);
+ } catch (SettingNotFoundException &e) {
+ UASSERT(!"Setting not found!");
+ }