1
0
mirror of https://github.com/garraflavatra/go-fmp.git synced 2025-06-28 12:35:12 +00:00
Files
go-fmp/fmp/fmp_test.go

71 lines
1.9 KiB
Go
Raw Normal View History

2025-06-11 16:01:49 +02:00
package fmp
2025-06-14 16:28:41 +02:00
import "testing"
2025-06-11 16:01:49 +02:00
func TestOpenFile(t *testing.T) {
f, err := OpenFile("../files/Untitled.fmp12")
if err != nil {
t.Fatal(err)
}
2025-06-11 16:19:31 +02:00
if f.FileSize != 393216 {
t.Errorf("expected file size to be 393216, got %d", f.FileSize)
}
2025-06-13 12:09:39 +02:00
if f.numSectors != 95 {
t.Errorf("expected number of sectors to be 95, got %d", f.numSectors)
2025-06-11 16:19:31 +02:00
}
2025-06-11 21:52:52 +02:00
if f.CreatorName != "Pro 12.0" {
t.Errorf("expected application name to be 'Pro 12.0', got '%s'", f.CreatorName)
2025-06-11 16:01:49 +02:00
}
if f.VersionDate.Format("2006-01-02") != "2025-01-11" {
t.Errorf("expected version date to be '2025-01-11', got '%s'", f.VersionDate.Format("2006-01-02"))
}
2025-06-12 10:53:31 +02:00
f.ToDebugFile("../private/output")
2025-06-11 16:01:49 +02:00
}
2025-06-12 11:44:57 +02:00
func TestTables(t *testing.T) {
f, err := OpenFile("../files/Untitled.fmp12")
if err != nil {
t.Fatal(err)
}
tables := f.Tables()
2025-06-14 15:30:42 +02:00
expectedNames := []string{"Untitled", "WayDomains", "WayProcesses"}
tableNames := []string{}
for _, table := range tables {
tableNames = append(tableNames, table.Name)
2025-06-14 15:19:36 +02:00
}
2025-06-14 15:30:42 +02:00
if !slicesHaveSameElements(tableNames, expectedNames) {
t.Errorf("tables do not match")
2025-06-12 11:44:57 +02:00
}
2025-06-15 21:09:58 +02:00
var field FmpColumn
for _, table := range tables {
for _, column := range table.Columns {
if column.Name == "PrimaryKey" {
field = column
break
}
}
}
if field.Type != FmpFieldSimple {
t.Errorf("expected field type to be simple, but it is not")
}
if field.DataType != FmpDataText {
t.Errorf("expected field data type to be text, but it is not")
}
if field.StorageType != FmpFieldStorageRegular {
t.Errorf("expected field storage type to be regular, but it is not")
}
2025-06-16 11:29:48 +02:00
if field.Repetitions != 1 {
t.Errorf("expected field repetition count to be 1, but it is %d", field.Repetitions)
}
2025-06-15 21:09:58 +02:00
if !field.Indexed {
t.Errorf("expected field to be indexed, but it is not")
}
if field.AutoEnter != FmpAutoEnterCalculationReplacingExistingValue {
t.Errorf("expected field to have auto enter calculation replacing existing value, but it does not")
}
2025-06-12 11:44:57 +02:00
}