#!/usr/bin/env ruby
# Ruby/GSL implementation of GSL "combination/test.c"
require("gsl")
require("./gsl_test.rb")
include GSL::Test
c63 = GSL::Matrix.alloc([0, 1, 2], [0, 1, 3], [0, 1, 4], [0, 1, 5],
[0, 2, 3], [0, 2, 4], [0, 2, 5],
[0, 3, 4], [0, 3, 5],
[0, 4, 5],
[1, 2, 3], [1, 2, 4], [1, 2, 5],
[1, 3, 4], [1, 3, 5],
[1, 4, 5],
[2, 3, 4], [2, 3, 5], [2, 4, 5],
[3, 4, 5])
GSL::IEEE.env_setup()
status = false
c = GSL::Combination.alloc(6, 3)
c.init_first
i = 0
begin
if i >= 20
status = true
break
end
for j in 0...3
status |= (c.data[j] != c63[i][j])
end
s1 = c.valid?
desc = sprintf("GSL::Combination#valid\(%u\)", i)
GSL::Test.test(s1, desc)
i += 1
end while c.next == GSL::SUCCESS
GSL::Test.test(status, "GSL::Combination#next, 6 choose 3 combination, 20 steps")
c.next
c.next
c.next
for j in 0...3
status |= (c.data[j] != c63[19][j])
end
GSL::Test.test(status, "GSL::Combination#next on the last combination")
s1 = c.valid?
GSL::Test.test(s1, "GSL::Combination#valid on the last combination")
d = GSL::Combination.alloc(6, 3)
GSL::Combination.memcpy(d, c)
status = false
for j in 0...3
status |= (d.data[j] != c.data[j])
end
GSL::Test.test(status, "GSL::Combination.memcpy, 6 choose 3 combination")
c.init_last
i = 20
begin
if i == 0
status = true
break;
end
i -= 1
for j in 0...3
status |= (c.data[j] != c63[i][j])
end
s1 = c.valid?
desc = sprintf("GSL::Combination#valid\(%u\)", i)
GSL::Test.test(s1, desc)
end while c.prev == GSL::SUCCESS
GSL::Test.test(status, "GSL::Combination#prev, 6 choose 3 combination, 20 steps")
c.prev
c.prev
c.prev
for j in 0...3
status |= (c.data[j] != c63[0][j])
end
GSL::Test.test(status, "GSL::Combination#prev on the first combination")
s1 = c.valid?
GSL::Test.test(s1, "GSL::Combination#valid on the first combination")
d = GSL::Combination.alloc(6, 3)
GSL::Combination.memcpy(d, c)
status = false
for j in 0...3
status |= (d.data[j] != c.data[j])
end
GSL::Test.test(status, "GSL::Combination.memcpy, 6 choose 3 combination")
c = GSL::Combination.calloc(7, 0)
status |= (c.next != GSL::FAILURE)
status |= (c.next != GSL::FAILURE)
status |= (c.prev != GSL::FAILURE)
status |= (c.prev != GSL::FAILURE)
GSL::Test.test(status, "GSL::Combination 7 choose 0")
c = GSL::Combination.calloc(7, 7)
for j in 0...7
status |= (c.get(j) != j)
end
status |= (c.next != GSL::FAILURE)
for j in 0...7
status |= (c.get(j) != j)
end
status |= (c.next != GSL::FAILURE)
for j in 0...7
status |= (c.get(j) != j)
end
status |= (c.next != GSL::FAILURE)
for j in 0...7
status |= (c.get(j) != j)
end
GSL::Test.test(status, "GSL::Combination 7 choose 7")
syntax highlighted by Code2HTML, v. 0.9.1