|
41 | 41 | end |
42 | 42 | end |
43 | 43 |
|
| 44 | +RSpec.shared_examples "model optimization option validation" do |
| 45 | + let(:valid_data) { [[1, 0], [0, 1]] } |
| 46 | + |
| 47 | + { |
| 48 | + max_iter: [0, -1, 1.5, "100", nil], |
| 49 | + tolerance: [0, -1e-6, Float::INFINITY, -Float::INFINITY, Float::NAN, Complex(1, 0), "1e-6", nil], |
| 50 | + param_tolerance: [0, -1e-6, Float::INFINITY, -Float::INFINITY, Float::NAN, Complex(1, 0), "1e-6", nil], |
| 51 | + learning_rate: [0, -0.01, Float::INFINITY, -Float::INFINITY, Float::NAN, Complex(0.01, 0), "0.01", nil], |
| 52 | + decay_factor: [0, 1, -0.1, 1.1, Float::INFINITY, -Float::INFINITY, Float::NAN, Complex(0.5, 0), "0.5", nil] |
| 53 | + }.each do |option, invalid_values| |
| 54 | + invalid_values.each do |value| |
| 55 | + it "rejects #{option}=#{value.inspect}" do |
| 56 | + expect { described_class.new(valid_data, option => value) }.to raise_error(ArgumentError, /\A#{option} /) |
| 57 | + end |
| 58 | + end |
| 59 | + end |
| 60 | +end |
| 61 | + |
44 | 62 | RSpec.configure do |config| |
45 | 63 | # Enable flags like --only-failures and --next-failure |
46 | 64 | config.example_status_persistence_file_path = ".rspec_status" |
|
0 commit comments