Files
compress/internal/domain/entities/pdf_test.go
Dmitriy Fofanov eee9a4a093 Добавлены скрипты сборки для кроссплатформенных двоичных файлов и лицензия GPL.
- Добавлен файл LICENSE с лицензией GNU General Public License версии 3.0.
- Создан скрипт PowerShell (build-all.ps1) для сборки двоичных файлов Windows и Linux из Windows с использованием кросс-компиляции.
- Разработан скрипт сборки Linux (build-linux.sh) для сборки двоичных файлов Linux.
- Реализован скрипт PowerShell (build-windows.ps1) для сборки двоичных файлов Windows.
- Каждый скрипт сборки включает упаковку и генерацию контрольной суммы SHA256 для двоичных файлов.
2025-11-05 13:05:49 +03:00

113 lines
2.6 KiB
Go

package entities_test
import (
"testing"
"compress/internal/domain/entities"
)
func TestCompressionResult_CalculateCompressionRatio(t *testing.T) {
tests := []struct {
name string
originalSize int64
compressedSize int64
expectedRatio float64
expectedSavedSpace int64
}{
{
name: "50% compression",
originalSize: 1000,
compressedSize: 500,
expectedRatio: 50.0,
expectedSavedSpace: 500,
},
{
name: "25% compression",
originalSize: 1000,
compressedSize: 750,
expectedRatio: 25.0,
expectedSavedSpace: 250,
},
{
name: "No compression",
originalSize: 1000,
compressedSize: 1000,
expectedRatio: 0.0,
expectedSavedSpace: 0,
},
{
name: "File got bigger",
originalSize: 1000,
compressedSize: 1100,
expectedRatio: -10.0,
expectedSavedSpace: -100,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := &entities.CompressionResult{
OriginalSize: tt.originalSize,
CompressedSize: tt.compressedSize,
}
result.CalculateCompressionRatio()
if result.CompressionRatio != tt.expectedRatio {
t.Errorf("Expected compression ratio %f, got %f", tt.expectedRatio, result.CompressionRatio)
}
if result.SavedSpace != tt.expectedSavedSpace {
t.Errorf("Expected saved space %d, got %d", tt.expectedSavedSpace, result.SavedSpace)
}
})
}
}
func TestCompressionResult_IsEffective(t *testing.T) {
tests := []struct {
name string
result *entities.CompressionResult
expectedEffective bool
}{
{
name: "Effective compression",
result: &entities.CompressionResult{
OriginalSize: 1000,
CompressedSize: 500,
CompressionRatio: 50.0,
Success: true,
},
expectedEffective: true,
},
{
name: "No compression but successful",
result: &entities.CompressionResult{
OriginalSize: 1000,
CompressedSize: 1000,
CompressionRatio: 0.0,
Success: true,
},
expectedEffective: false,
},
{
name: "Good compression but failed",
result: &entities.CompressionResult{
OriginalSize: 1000,
CompressedSize: 500,
CompressionRatio: 50.0,
Success: false,
},
expectedEffective: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := tt.result.IsEffective(); got != tt.expectedEffective {
t.Errorf("IsEffective() = %v, want %v", got, tt.expectedEffective)
}
})
}
}