74 lines
2.0 KiB
V
74 lines
2.0 KiB
V
module code
|
|
|
|
fn test_parse_struct() {
|
|
// Test case 1: struct with comments and pub fields
|
|
struct_str := '// TestResult is a struct for test results
|
|
// It contains information about test execution
|
|
pub struct TestResult {
|
|
pub:
|
|
success bool
|
|
message string
|
|
code int
|
|
}
|
|
'
|
|
result := parse_struct(struct_str) or {
|
|
assert false, 'Failed to parse struct: ${err}'
|
|
Struct{}
|
|
}
|
|
|
|
assert result.name == 'TestResult'
|
|
assert result.description == 'TestResult is a struct for test results
|
|
It contains information about test execution'
|
|
assert result.is_pub == true
|
|
assert result.fields.len == 3
|
|
|
|
assert result.fields[0].name == 'success'
|
|
assert result.fields[0].typ.symbol() == 'bool'
|
|
assert result.fields[0].is_pub == true
|
|
assert result.fields[0].is_mut == false
|
|
|
|
assert result.fields[1].name == 'message'
|
|
assert result.fields[1].typ.symbol() == 'string'
|
|
assert result.fields[1].is_pub == true
|
|
assert result.fields[1].is_mut == false
|
|
|
|
assert result.fields[2].name == 'code'
|
|
assert result.fields[2].typ.symbol() == 'int'
|
|
assert result.fields[2].is_pub == true
|
|
assert result.fields[2].is_mut == false
|
|
|
|
// Test case 2: struct without comments and with mixed visibility
|
|
struct_str2 := 'struct SimpleStruct {
|
|
pub:
|
|
name string
|
|
mut:
|
|
count int
|
|
active bool
|
|
}
|
|
'
|
|
result2 := parse_struct(struct_str2) or {
|
|
assert false, 'Failed to parse struct: ${err}'
|
|
Struct{}
|
|
}
|
|
|
|
assert result2.name == 'SimpleStruct'
|
|
assert result2.description == ''
|
|
assert result2.is_pub == false
|
|
assert result2.fields.len == 3
|
|
|
|
assert result2.fields[0].name == 'name'
|
|
assert result2.fields[0].typ.symbol() == 'string'
|
|
assert result2.fields[0].is_pub == true
|
|
assert result2.fields[0].is_mut == false
|
|
|
|
assert result2.fields[1].name == 'count'
|
|
assert result2.fields[1].typ.symbol() == 'int'
|
|
assert result2.fields[1].is_pub == false
|
|
assert result2.fields[1].is_mut == true
|
|
|
|
assert result2.fields[2].name == 'active'
|
|
assert result2.fields[2].typ.symbol() == 'bool'
|
|
assert result2.fields[2].is_pub == false
|
|
assert result2.fields[2].is_mut == true
|
|
}
|