lana/tests/default_config_test.v

145 lines
3.5 KiB
V

module tests
import config
fn test_default_config_has_expected_values() {
cfg := config.default_config
assert cfg.src_dir == 'src'
assert cfg.build_dir == 'build'
assert cfg.bin_dir == 'bin'
assert cfg.toolchain == 'gcc'
assert cfg.debug == true
assert cfg.optimize == false
assert cfg.verbose == false
assert cfg.shared_libs.len == 0
assert cfg.tools.len == 0
assert cfg.dependencies.len == 0
}
fn test_shared_lib_config_has_default_output_dir() {
lib := config.SharedLibConfig{
name: 'test'
}
assert lib.output_dir == 'bin/lib'
}
fn test_tool_config_has_default_output_dir() {
tool := config.ToolConfig{
name: 'test'
}
assert tool.output_dir == 'bin/tools'
}
fn test_build_config_has_default_dependencies_dir() {
cfg := config.BuildConfig{}
assert cfg.dependencies_dir == 'dependencies'
}
fn test_build_config_has_parallel_compilation_enabled_by_default() {
cfg := config.BuildConfig{}
assert cfg.parallel_compilation == true
}
fn test_build_config_has_default_compiler() {
cfg := config.BuildConfig{}
assert cfg.compiler == 'g++'
}
fn test_get_target_config_values_for_shared_lib() {
lib := config.SharedLibConfig{
name: 'test'
debug: true
optimize: false
verbose: true
include_dirs: ['include']
cflags: ['-DTEST']
}
target := config.TargetConfig(lib)
is_shared, use_debug, use_optimize, use_verbose, includes, cflags := config.get_target_config_values(target)
assert is_shared == true
assert use_debug == true
assert use_optimize == false
assert use_verbose == true
assert includes.contains('include')
assert cflags.contains('-DTEST')
}
fn test_get_target_config_values_for_tool() {
tool := config.ToolConfig{
name: 'test'
debug: false
optimize: true
verbose: false
include_dirs: ['src']
cflags: ['-O3']
}
target := config.TargetConfig(tool)
is_shared, use_debug, use_optimize, use_verbose, includes, cflags := config.get_target_config_values(target)
assert is_shared == false
assert use_debug == false
assert use_optimize == true
assert use_verbose == false
assert includes.contains('src')
assert cflags.contains('-O3')
}
fn test_build_compiler_command_basic() {
cfg := config.BuildConfig{
compiler: 'g++'
debug: true
include_dirs: ['include']
cflags: ['-DTEST']
}
cmd := config.build_compiler_command('src/main.cpp', 'build/main.o', cfg)
assert cmd.starts_with('g++')
assert cmd.contains('-c')
assert cmd.contains('-Iinclude')
assert cmd.contains('-g')
assert cmd.contains('-O0')
assert cmd.contains('-Wall')
assert cmd.contains('-Wextra')
assert cmd.contains('-DTEST')
assert cmd.contains('src/main.cpp')
assert cmd.contains('-o build/main.o')
}
fn test_build_compiler_command_optimized() {
cfg := config.BuildConfig{
compiler: 'clang++'
debug: false
optimize: true
}
cmd := config.build_compiler_command('main.cpp', 'main.o', cfg)
assert cmd.starts_with('clang++')
assert cmd.contains('-O3')
assert !cmd.contains('-g')
}
fn test_build_compiler_command_default_optimization() {
cfg := config.BuildConfig{
compiler: 'g++'
debug: false
optimize: false
}
cmd := config.build_compiler_command('main.cpp', 'main.o', cfg)
assert cmd.contains('-O2')
assert !cmd.contains('-O3')
assert !cmd.contains('-g')
}