Достижение: Добавлены скрипты и документация для релиза PDF Compressor.
- Добавлен release-body.md для подробных заметок о релизе на русском языке. - Реализован release-gitea.ps1 для автоматизированного релиза Gitea с помощью PowerShell. - Создан release-gitea.sh для автоматизированного релиза Gitea с помощью Bash. - Добавлен release.sh для сборки и маркировки релизов с поддержкой нескольких платформ. - Улучшен пользовательский интерфейс благодаря информативному логированию и обработке ошибок. - Добавлена поддержка переменных окружения и управления конфигурацией. - Добавлена функция создания архивов и загрузки ресурсов в Gitea.
This commit is contained in:
112
internal/domain/entities/pdf_test.go
Normal file
112
internal/domain/entities/pdf_test.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package entities_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"compressor/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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user