record: 0 und 1 = erste Zeile, negative Nummern zählen vom Ende

This commit is contained in:
wkh
2026-10-11 22:51:43 +02:00
parent d5286c3600
commit 777a3b56e2
4 changed files with 30 additions and 11 deletions
+12 -7
View File
@@ -5,8 +5,18 @@ require 'pty'
require_relative '../lib/rdb'
class SelectionTest < RdbCase
def test_record_rejects_numbers_below_one_and_junk
%w[0 -1 abc 2.5].each do |n|
def test_record_zero_and_one_are_the_first_and_negatives_count_from_the_end
{ '0' => '1', '1' => '1', '2' => '3', '3' => '6', '-1' => '6', '-2' => '3', '-3' => '1', '+2' => '3' }.each do |n, item|
assert_equal [[item]], data(rdb('record', n, file: 'owners')).map { |r| r.first(1) }, "record #{n}"
end
end
def test_record_beyond_either_end_is_an_empty_table
%w[4 9 -4 -9].each { |n| assert_equal [], data(rdb('record', n, file: 'owners')), "record #{n}" }
end
def test_record_rejects_junk
%w[abc 2.5 1e3].each do |n|
out, err, st = run3('record', n, stdin: File.read(File.join(@dir, 'owners')))
refute st.success?, "record #{n} should fail"
assert_equal '', out
@@ -14,11 +24,6 @@ class SelectionTest < RdbCase
end
end
def test_record_beyond_the_end_is_an_empty_table
assert_equal [], data(rdb('record', '9', file: 'owners'))
assert_equal [%w[6 cy]], data(rdb('record', '3', file: 'owners'))
end
def test_row_numeric_condition
out = rdb('row', 'Cost > 5', file: 'inventory')
assert_equal %w[3 6 7], data(out).map(&:first)