CC ?= gcc
CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2
CFLAGS += -I../src/libtikker/include -I../src/third_party -Iunit
LDFLAGS := -L../build/lib -ltikker -lsqlite3 -lm

UNIT_TESTS := $(wildcard unit/test_*.c)
UNIT_TARGETS := $(UNIT_TESTS:unit/test_%.c=unit/test_%)
INTEGRATION_TESTS := $(wildcard integration/test_*.c)
INTEGRATION_TARGETS := $(INTEGRATION_TESTS:integration/test_%.c=integration/test_%)

.PHONY: test unit integration clean help

test: unit integration
	@echo "✓ All tests completed"

unit: $(UNIT_TARGETS)
	@echo "Running unit tests..."
	@for test in $(UNIT_TARGETS); do \
		if [ -f $$test ]; then \
			$$test || exit 1; \
		fi; \
	done
	@echo "✓ Unit tests passed"

integration: $(INTEGRATION_TARGETS)
	@echo "Running integration tests..."
	@for test in $(INTEGRATION_TARGETS); do \
		if [ -f $$test ]; then \
			$$test || exit 1; \
		fi; \
	done
	@echo "✓ Integration tests passed"

unit/test_%: unit/test_%.c
	@echo "Building test: $@"
	@$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

integration/test_%: integration/test_%.c
	@echo "Building integration test: $@"
	@$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

clean:
	@rm -f unit/test_*
	@rm -f integration/test_*
	@find . -name "*.o" -delete
	@echo "✓ Tests cleaned"

help:
	@echo "Test suite targets:"
	@echo "  make test         - Run all tests"
	@echo "  make unit         - Run unit tests"
	@echo "  make integration  - Run integration tests"
	@echo "  make clean        - Remove test artifacts"
