t27.aiEnglish

Инварианты и замеры

Вы узнаете

Как пишутся блоки invariant и bench и кто их вычисляет.

invariant с именем и следующим assert задаёт правило спеки, которое верно для любого значения, а не для одного примера. bench с именем отмечает блок для замера времени. Оба компилируются. Тестовый прогон этого сайта вычисляет только блоки test: инварианты и замеры он пропускает, так что ложный инвариант здесь проходит молча. Поэтому спека урока повторяет свой инвариант тестом.

Попробуйте

Сделайте инвариант ложным в плеере и убедитесь, что этот сайт молчит, затем сделайте ложным тест.

Открыть интерактивный урок →

t27 basics 20: test, invariant and bench
t27 basics 20: test, invariant and bench ↗

The three kinds of checking block in t27 and which ones the site test runner evaluates. Lesson 20 of the t27 basics course.

specs/basics/20_invariants.t27

// SPDX-License-Identifier: Apache-2.0
; t27 basics, lesson 20: Invariants and benches.
; An invariant states a rule that must always hold; a bench names a measurement.

module basics_20_invariants;

pub const SIDES : u8 = 3;

invariant a_triangle_has_three_sides
    assert SIDES == 3

test the_invariant_as_a_test {
    assert SIDES == 3;
}

Открыть спеку урока в плеере ↗

Все уроки