aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-04-08 18:21:40 +1200
committerArslaan Pathan <[email protected]>2026-04-08 18:21:40 +1200
commit0f19e5f0175b0e031257ccd22f42e21baaf2f720 (patch)
treecee391e4de8b22470c143239f826055908eb1c60 /tests
parentc9660a840256308d4dde40613a1af3296d3fdead (diff)
downloadsaffron-0f19e5f0175b0e031257ccd22f42e21baaf2f720.tar.xz
saffron-0f19e5f0175b0e031257ccd22f42e21baaf2f720.zip
Implement saffron_window_main and saffron_quit, among a few other missing APIs, and get an actual API test to work.
IT WORKS IT WORKS IT WORKS THIS IS SO PEAK IT WORKS OHMYGOD IT WORKS FINALLY IT WORKS IT WORKS IT WOORKSKSKSKSKKS!!!!!!
Diffstat (limited to 'tests')
-rw-r--r--tests/test_main.c96
1 files changed, 47 insertions, 49 deletions
diff --git a/tests/test_main.c b/tests/test_main.c
index e24d17f..c171192 100644
--- a/tests/test_main.c
+++ b/tests/test_main.c
@@ -1,52 +1,50 @@
-/* this doesnt really test saffron's api right now
- * because i need to actually implement stuff
- * but its good refactor for now
-*/
#include <SDL3/SDL.h>
-#include <SDL3/SDL_main.h>
-#include <SDL3_ttf/SDL_ttf.h>
-
-int main(int argc, char *argv[]) {
- SDL_Init(SDL_INIT_VIDEO);
- TTF_Init();
-
- SDL_Window *window = SDL_CreateWindow("saffron", 800, 600, 0);
- SDL_Renderer *renderer = SDL_CreateRenderer(window, NULL);
-
- TTF_Font *font = TTF_OpenFont("/usr/share/fonts/maple-mono/MapleMonoNL-Regular.ttf", 20); // "works on my machine" - Arslaan, 2026
-
- bool running = true;
- SDL_Event event;
- SDL_FRect rect;
- rect.x = rect.y = 100;
- rect.w = rect.h = 100;
-
- SDL_FRect text_rect = {200, 200, 0, 0};
- SDL_Color white = {255, 255, 255, 255};
- SDL_Surface *surface = TTF_RenderText_Blended(font, "hello, saffron!", 0, white);
- SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
- SDL_DestroySurface(surface);
- SDL_GetTextureSize(texture, &text_rect.w, &text_rect.h);
-
- while (running) {
- while (SDL_PollEvent(&event)) {
- if (event.type == SDL_EVENT_QUIT) {
- running = false;
- }
- }
-
- SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
- SDL_RenderClear(renderer);
- SDL_SetRenderDrawColor(renderer, 255, 0, 0, SDL_ALPHA_OPAQUE);
- SDL_RenderFillRect(renderer, &rect);
- SDL_RenderTexture(renderer, texture, NULL, &text_rect);
- SDL_RenderPresent(renderer);
- }
-
- TTF_CloseFont(font);
- TTF_Quit();
- SDL_DestroyRenderer(renderer);
- SDL_DestroyWindow(window);
- SDL_Quit();
+#include <saffron_api.h>
+#include <SDL3/SDL_rect.h>
+#include <SDL3/SDL_render.h>
+#include <saffron.h>
+
+/* PLEASE don't do this in production
+ * when wrappers are implemented,
+ * THEY will make draw functions for you
+ * THIS IS A BAD IDEA */
+void my_test_draw(SaffronWidget* self, SDL_Renderer* renderer) {
+ SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
+ SDL_FRect rect = {self->x, self->y, self->w, self->h};
+ SDL_RenderFillRect(renderer, &rect);
+
+ SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
+ SDL_RenderRect(renderer, &rect);
+}
+
+int main(void) {
+ saffron_init();
+
+ SaffronWindow* window = saffron_window_new("saffron test", 800, 600);
+
+ /* i guess IM THE LUNATIC NOW
+ * DEAL WITH IT */
+ SaffronWidget* test = saffron_widget_new();
+ test->x = 100;
+ test->y = 100;
+ test->w = 200;
+ test->h = 150;
+ test->draw = my_test_draw;
+
+ /* lunatic method 2 */
+ SaffronWidget* test2 = saffron_widget_new();
+ test2->x = 150;
+ test2->y = 500;
+ test2->w = 300;
+ test2->h = 170;
+ test2->draw = my_test_draw;
+
+ saffron_widget_add_child(window->root, test);
+ saffron_widget_add_child(window->root, test2);
+
+ saffron_window_main(window);
+
+ saffron_window_free(window);
+ saffron_quit();
return 0;
}