Sobes.tech
Назад к вопросам
Middle
2

Напишите тесты для проверки граничных случаев решения задачи о максимальном расстоянии

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

Для тестирования граничных случаев задачи о максимальном расстоянии важно проверить:

  • Пустой вход (нет точек)
  • Одна точка
  • Две точки
  • Несколько точек с одинаковыми координатами
  • Максимально возможное количество точек
  • Точки с отрицательными координатами

Пример тестов на Go:

package main

import (
	"testing"
)

func TestMaxDistance(t *testing.T) {
	tests := []struct {
		name   string
		points [][2]int
		want   float64
	}{
		{"empty input", nil, 0},
		{"single point", [][2]int{{0, 0}}, 0},
		{"two points", [][2]int{{0, 0}, {3, 4}}, 5},
		{"identical points", [][2]int{{1, 1}, {1, 1}, {1, 1}}, 0},
		{"negative coordinates", [][2]int{{-1, -1}, {2, 3}}, 5},
		// Добавьте тест с большим количеством точек, если нужно
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			got := MaxDistance(tt.points)
			if got != tt.want {
				t.Errorf("MaxDistance() = %v, want %v", got, tt.want)
			}
		})
	}
}

// Пример функции для вычисления максимального расстояния
func MaxDistance(points [][2]int) float64 {
	maxDist := 0.0
	for i := 0; i < len(points); i++ {
		for j := i + 1; j < len(points); j++ {
			dx := points[i][0] - points[j][0]
			dy := points[i][1] - points[j][1]
			dist := float64(dx*dx + dy*dy)
			if dist > maxDist {
				maxDist = dist
			}
		}
	}
	return maxDist
}

В тестах важно проверять корректность работы при минимальных и максимальных входных данных, а также при особых случаях (например, все точки совпадают).