diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crepe/facade/DB.cpp | 4 | ||||
| -rw-r--r-- | src/crepe/facade/DB.h | 4 | ||||
| -rw-r--r-- | src/example/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/example/audio_internal.cpp | 56 | ||||
| -rw-r--r-- | src/example/db.cpp | 30 | ||||
| -rw-r--r-- | src/example/particles.cpp | 43 | ||||
| -rw-r--r-- | src/example/physics.cpp | 24 | ||||
| -rw-r--r-- | src/example/rendering.cpp | 72 | ||||
| -rw-r--r-- | src/test/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/test/DBTest.cpp | 29 | 
10 files changed, 35 insertions, 233 deletions
| diff --git a/src/crepe/facade/DB.cpp b/src/crepe/facade/DB.cpp index d5d19dc..95cf606 100644 --- a/src/crepe/facade/DB.cpp +++ b/src/crepe/facade/DB.cpp @@ -18,8 +18,8 @@ DB::DB(const string & path) {  	this->db = {db, [](libdb::DB * db) { db->close(db, 0); }};  	// load or create database file -	ret = this->db->open(this->db.get(), NULL, path.c_str(), NULL, libdb::DB_BTREE, DB_CREATE, -						 0); +	const char * file = path.empty() ? NULL : path.c_str(); +	ret = this->db->open(this->db.get(), NULL, file, NULL, libdb::DB_BTREE, DB_CREATE, 0);  	if (ret != 0) throw runtime_error(format("db->open: {}", libdb::db_strerror(ret)));  	// create cursor diff --git a/src/crepe/facade/DB.h b/src/crepe/facade/DB.h index 629b0eb..115c0f1 100644 --- a/src/crepe/facade/DB.h +++ b/src/crepe/facade/DB.h @@ -22,8 +22,10 @@ class DB {  public:  	/**  	 * \param path  The path of the database (created if nonexistant) +	 * +	 * \note If \p path is empty, the database is entirely in-memory  	 */ -	DB(const std::string & path); +	DB(const std::string & path = "");  	virtual ~DB() = default;  public: diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index f21bd24..c75a4b5 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -16,12 +16,7 @@ function(add_example target_name)  	add_dependencies(examples ${target_name})  endfunction() -add_example(audio_internal) -add_example(rendering)  add_example(asset_manager) -add_example(physics)  add_example(savemgr) -add_example(db) -add_example(particles)  add_example(gameloop) diff --git a/src/example/audio_internal.cpp b/src/example/audio_internal.cpp deleted file mode 100644 index 661161a..0000000 --- a/src/example/audio_internal.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/** \file - *  - * Standalone example for usage of the internal \c Sound class. - */ - -#include <crepe/api/Config.h> -#include <crepe/facade/Sound.h> -#include <crepe/util/Log.h> - -#include <thread> - -using namespace crepe; -using namespace std; -using namespace std::chrono_literals; -using std::make_unique; - -// Unrelated stuff that is not part of this POC -int _ = []() { -	// Show dbg_trace() output -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::TRACE; - -	return 0; // satisfy compiler -}(); - -int main() { -	// Load a background track (Ogg Vorbis) -	auto bgm = Sound("../mwe/audio/bgm.ogg"); -	// Load three short samples (WAV) -	auto sfx1 = Sound("../mwe/audio/sfx1.wav"); -	auto sfx2 = Sound("../mwe/audio/sfx2.wav"); -	auto sfx3 = Sound("../mwe/audio/sfx3.wav"); - -	// Start the background track -	bgm.play(); - -	// Play each sample sequentially while pausing and resuming the background track -	this_thread::sleep_for(500ms); -	sfx1.play(); -	this_thread::sleep_for(500ms); -	sfx2.play(); -	bgm.pause(); -	this_thread::sleep_for(500ms); -	sfx3.play(); -	bgm.play(); -	this_thread::sleep_for(500ms); - -	// Play all samples simultaniously -	sfx1.play(); -	sfx2.play(); -	sfx3.play(); -	this_thread::sleep_for(1000ms); - -	// Stop all audio and exit -	return EXIT_SUCCESS; -} diff --git a/src/example/db.cpp b/src/example/db.cpp deleted file mode 100644 index ee4e8fc..0000000 --- a/src/example/db.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include <crepe/api/Config.h> -#include <crepe/facade/DB.h> -#include <crepe/util/Log.h> - -using namespace crepe; -using namespace std; - -// run before main -static auto _ = []() { -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::TRACE; -	return 0; -}(); - -int main() { -	dbg_trace(); - -	DB db("file.db"); - -	const char * test_key = "test-key"; -	string test_data = "Hello world!"; - -	dbg_logf("DB has key = {}", db.has(test_key)); - -	db.set(test_key, test_data); - -	dbg_logf("key = \"{}\"", db.get(test_key)); - -	return 0; -} diff --git a/src/example/particles.cpp b/src/example/particles.cpp deleted file mode 100644 index 3d5f676..0000000 --- a/src/example/particles.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include <crepe/ComponentManager.h> -#include <crepe/api/AssetManager.h> - -#include <crepe/Component.h> -#include <crepe/api/Color.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/ParticleEmitter.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Sprite.h> -#include <crepe/api/Texture.h> -#include <crepe/api/Transform.h> - -using namespace crepe; -using namespace std; - -int main(int argc, char * argv[]) { -	ComponentManager mgr{}; -	GameObject game_object = mgr.new_object("", "", Vector2{0, 0}, 0, 0); -	Color color(0, 0, 0, 0); -	Sprite test_sprite = game_object.add_component<Sprite>( -		make_shared<Texture>("../asset/texture/img.png"), color, FlipSettings{true, true}); -	game_object.add_component<ParticleEmitter>(ParticleEmitter::Data{ -		.position = {0, 0}, -		.max_particles = 100, -		.emission_rate = 0, -		.min_speed = 0, -		.max_speed = 0, -		.min_angle = 0, -		.max_angle = 0, -		.begin_lifespan = 0, -		.end_lifespan = 0, -		.force_over_time = Vector2{0, 0}, -		.boundary{ -			.width = 0, -			.height = 0, -			.offset = Vector2{0, 0}, -			.reset_on_exit = false, -		}, -		.sprite = test_sprite, -	}); - -	return 0; -} diff --git a/src/example/physics.cpp b/src/example/physics.cpp deleted file mode 100644 index ad663a0..0000000 --- a/src/example/physics.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include <crepe/Component.h> -#include <crepe/ComponentManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Transform.h> -#include <crepe/system/PhysicsSystem.h> - -using namespace crepe; -using namespace std; - -int main(int argc, char * argv[]) { -	ComponentManager mgr{}; - -	GameObject game_object = mgr.new_object("Name", "Tag", Vector2{0, 0}, 0, 0); -	game_object.add_component<Rigidbody>(Rigidbody::Data{ -		.mass = 1, -		.gravity_scale = 1, -		.body_type = Rigidbody::BodyType::DYNAMIC, -		.constraints = {0, 0, 0}, -		.use_gravity = true, -		.bounce = false, -	}); -	return 0; -} diff --git a/src/example/rendering.cpp b/src/example/rendering.cpp deleted file mode 100644 index ecd3f6a..0000000 --- a/src/example/rendering.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include "api/Camera.h" -#include <crepe/ComponentManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/system/RenderSystem.h> -#include <crepe/util/Log.h> - -#include <crepe/api/AssetManager.h> -#include <crepe/api/Color.h> -#include <crepe/api/Sprite.h> -#include <crepe/api/Texture.h> -#include <crepe/api/Transform.h> -#include <crepe/api/Vector2.h> - -#include <chrono> -#include <memory> - -using namespace std; -using namespace crepe; - -int main() { -	dbg_trace(); - -	ComponentManager mgr{}; -	RenderSystem sys{mgr}; - -	GameObject obj = mgr.new_object("name", "tag", Vector2{0, 0}, 1, 1); -	GameObject obj1 = mgr.new_object("name", "tag", Vector2{500, 0}, 1, 0.1); -	GameObject obj2 = mgr.new_object("name", "tag", Vector2{800, 0}, 1, 0.1); - -	// Normal adding components -	{ -		Color color(0, 0, 0, 0); -		Sprite & sprite -			= obj.add_component<Sprite>(make_shared<Texture>("../asset/texture/img.png"), -										color, FlipSettings{false, false}); -		sprite.sorting_in_layer = 2; -		sprite.order_in_layer = 1; -		obj.add_component<Camera>(Color::get_red()); -	} -	{ -		Color color(0, 0, 0, 0); -		Sprite & sprite = obj1.add_component<Sprite>( -			make_shared<Texture>("../asset/texture/img.png"), color, FlipSettings{true, true}); -		sprite.sorting_in_layer = 2; -		sprite.order_in_layer = 2; -	} - -	{ -		Color color(0, 0, 0, 0); -		Sprite & sprite = obj2.add_component<Sprite>( -			make_shared<Texture>("../asset/texture/img.png"), color, FlipSettings{true, true}); -		sprite.sorting_in_layer = 1; -		sprite.order_in_layer = 2; -	} - -	/* -	{ -		Color color(0, 0, 0, 0); -		auto img = mgr.cache<Texture>("../asset/texture/second.png"); -		obj2.add_component<Sprite>(img, color, FlipSettings{true, true}); -	} -	*/ - -	sys.update(); -	/* - -	auto start = std::chrono::steady_clock::now(); -	while (std::chrono::steady_clock::now() - start < std::chrono::seconds(5)) { -		sys.update(); -	} -	*/ -} diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index c1f935d..61dd2d9 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -6,5 +6,6 @@ target_sources(test_main PUBLIC  	ECSTest.cpp  	SceneManagerTest.cpp  	ValueBrokerTest.cpp +	DBTest.cpp  ) diff --git a/src/test/DBTest.cpp b/src/test/DBTest.cpp new file mode 100644 index 0000000..b57eba9 --- /dev/null +++ b/src/test/DBTest.cpp @@ -0,0 +1,29 @@ +#include <gtest/gtest.h> +#include <crepe/facade/DB.h> + +using namespace std; +using namespace crepe; +using namespace testing; + +class DBTest : public Test { +public: +	DB db; +}; + +TEST_F(DBTest, ReadWrite) { +	db.set("foo", "bar"); +	EXPECT_EQ(db.get("foo"), "bar"); +} + +TEST_F(DBTest, Nonexistant) { +	EXPECT_THROW(db.get("foo"), std::out_of_range); +	db.set("foo", "bar"); +	EXPECT_NO_THROW(db.get("foo")); +} + +TEST_F(DBTest, Has) { +	EXPECT_EQ(db.has("foo"), false); +	db.set("foo", "bar"); +	EXPECT_EQ(db.has("foo"), true); +} + |