package metrics import ( "errors" "friendica-exporter/internal/testutil" "testing" ) func TestConvertMemoryToBytes(t *testing.T) { tt := []struct { desc string memory string wantErr error wantEqual uint64 }{ { desc: "1 kilobyte (upper case)", memory: "1K", wantErr: nil, wantEqual: 1024, }, { desc: "1 kilobyte (lower case)", memory: "1k", wantErr: nil, wantEqual: 1024, }, { desc: "1 megabyte (upper case)", memory: "1M", wantErr: nil, wantEqual: 1048576, }, { desc: "1 megabyte (lower case)", memory: "1m", wantErr: nil, wantEqual: 1048576, }, { desc: "1 gigabyte (upper case)", memory: "1G", wantErr: nil, wantEqual: 1073741824, }, { desc: "1 gigabyte (lower case)", memory: "1g", wantErr: nil, wantEqual: 1073741824, }, { desc: "2 Kilobytes", memory: "2K", wantErr: nil, wantEqual: 2048, }, { desc: "5 gigabytes", memory: "5g", wantErr: nil, wantEqual: 5368709120, }, { desc: "0.5 Megabyte", memory: "0.5M", wantErr: nil, wantEqual: 0, }, { desc: "10.7 Kilobytes", memory: "10.7k", wantErr: nil, wantEqual: 10240, }, { desc: "12345234 Bytes", memory: "12345234", wantErr: nil, wantEqual: 12345234, }, { desc: "Invalid", memory: "invalid", wantErr: errors.New("invalid memory format"), wantEqual: 0, }, { desc: "1234X", memory: "1234X", wantErr: errors.New("invalid memory format"), wantEqual: 0, }, { desc: "512 Megabytes", memory: "512M", wantErr: nil, wantEqual: 536870912, }, { desc: "CopyPasteError", memory: "512M512M", wantErr: errors.New("invalid memory format"), wantEqual: 0, }, } for _, tc := range tt { tc := tc t.Run(tc.desc, func(t *testing.T) { t.Parallel() equal, err := ConvertMemoryToBytes(tc.memory) if !testutil.EqualErrorMessage(err, tc.wantErr) { t.Errorf("got error %q, want %q", err, tc.wantErr) } if equal != tc.wantEqual { t.Errorf("got equal %v, want %v", equal, tc.wantEqual) } }) } }