Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование и тестинг на GO

- Ученик (112), на голосовании 1 неделю назад
Написать программу:

Функция GetUTFLength(input []byte) (int, error) возвращает длину строки UTF8 и ошибку ErrInvalidUTF8 (в случае возникновения). Напишите тест, который бы проверял возвращаемые функцией значения.

var ErrInvalidUTF8 = errors.New ("invalid utf8")

func GetUTFLength(input []byte) (int, error) {
 if !utf8.Valid(input) {
  return 0, ErrInvalidUTF8
 }

 return utf8.RuneCount(input), nil
}

Примечания
Функцию GetUTFLength реализовывать не нужно.
Голосование за лучший ответ
Undefined Undefined Ученик (148) 1 месяц назад
 package main 

import (
"errors"
"testing"
"unicode/utf8"
)

// ErrInvalidUTF8 представляет ошибку, указывающую на некорректные данные UTF-8.
var ErrInvalidUTF8 = errors.New("invalid utf8")

// GetUTFLength возвращает длину строки UTF8 и ошибку ErrInvalidUTF8 (в случае возникновения).
func GetUTFLength(input []byte) (int, error) {
if !utf8.Valid(input) {
return 0, ErrInvalidUTF8
}

return utf8.RuneCount(input), nil
}

// TestGetUTFLength проверяет возвращаемые значения функции GetUTFLength.
func TestGetUTFLength(t *testing.T) {
tests := []struct {
input []byte
expected int
err error
}{
// Тест с корректной строкой UTF-8.
{input: []byte("Hello, 世界"), expected: 9, err: nil},

// Тест с некорректной строкой UTF-8.
{input: []byte{0x80}), expected: 0, err: ErrInvalidUTF8},

// Тест с пустой строкой.
{input: []byte{}, expected: 0, err: nil},

// Тест с одной руной UTF-8.
{input: []byte("你"), expected: 1, err: nil},
}

for _, tt := range tests {
got, err := GetUTFLength(tt.input)
if got != tt.expected {
t.Errorf("GetUTFLength() got = %v, expected = %v", got, tt.expected)
}
if err != tt.err {
t.Errorf("GetUTFLength() error = %v, expected = %v", err, tt.err)
}
}
}

func main() {
// Тесты будут выполнены автоматически при запуске программы.
// Для выполнения тестов вручную можно использовать команду:
// go test -v
}
Похожие вопросы