[253] | 1 | require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
---|
| 2 | include OpenEHR::RM::DataTypes::Quantity
|
---|
| 3 | include OpenEHR::RM::DataTypes::Quantity::ProportionKind
|
---|
| 4 |
|
---|
| 5 | describe DvProportion do
|
---|
| 6 | before(:all) do
|
---|
| 7 | @dv_proportion0 = DvProportion.new(:numerator => 2,
|
---|
| 8 | :denominator => 3,
|
---|
| 9 | :type => PK_RATIO,
|
---|
| 10 | :accuracy => 1,
|
---|
| 11 | :accuracy_percent => true)
|
---|
| 12 | @dv_proportion1 = DvProportion.new(:numerator => 3,
|
---|
| 13 | :denominator => 1,
|
---|
| 14 | :type => PK_UNITARY)
|
---|
| 15 | @dv_proportion2 = DvProportion.new(:numerator => 5,
|
---|
| 16 | :denominator => 100,
|
---|
| 17 | :type => PK_PERCENT)
|
---|
| 18 | @dv_proportion3 = DvProportion.new(:numerator => 7,
|
---|
| 19 | :denominator => 8,
|
---|
| 20 | :type => PK_FRACTION)
|
---|
| 21 | @dv_proportion4 = DvProportion.new(:numerator => 9,
|
---|
| 22 | :denominator => 10,
|
---|
| 23 | :type => PK_INTEGER_FRACTION)
|
---|
| 24 | end
|
---|
| 25 |
|
---|
| 26 | describe 'PK_RATIO type' do
|
---|
| 27 | it 'should be an instance of DvProportion' do
|
---|
| 28 | @dv_proportion0.should be_an_instance_of DvProportion
|
---|
| 29 | end
|
---|
| 30 |
|
---|
| 31 | it 's numerator should be equal 2' do
|
---|
| 32 | @dv_proportion0.numerator.should be_equal 2
|
---|
| 33 | end
|
---|
| 34 |
|
---|
| 35 | it 's denominator should be equal 3' do
|
---|
| 36 | @dv_proportion0.denominator.should be_equal 3
|
---|
| 37 | end
|
---|
| 38 |
|
---|
| 39 | it 's type should be equal 0' do
|
---|
| 40 | @dv_proportion0.type.should == 0
|
---|
| 41 | end
|
---|
| 42 |
|
---|
| 43 | it 's magnitude should be 2/3' do
|
---|
| 44 | @dv_proportion0.magnitude.should == 2.0/3.0
|
---|
| 45 | end
|
---|
| 46 |
|
---|
| 47 | it 's accuracy should be 1' do
|
---|
| 48 | @dv_proportion0.accuracy.should == 1
|
---|
| 49 | end
|
---|
| 50 |
|
---|
| 51 | it 'is_integral? should be true' do
|
---|
| 52 | @dv_proportion0.is_integral?.should be_true
|
---|
| 53 | end
|
---|
| 54 |
|
---|
| 55 | it 'should be comperable to same type DvProportion' do
|
---|
| 56 | dv_propotion_type = DvProportion.new(:numerator => 3,
|
---|
| 57 | :denominator => 4,
|
---|
| 58 | :type => 0)
|
---|
| 59 | @dv_proportion0.is_strictly_comparable_to?(dv_propotion_type).
|
---|
| 60 | should be_true
|
---|
| 61 | end
|
---|
| 62 |
|
---|
| 63 | it 'should not be comparable to other type DvPropotion' do
|
---|
| 64 | @dv_proportion0.is_strictly_comparable_to?(@dv_proportion1).
|
---|
| 65 | should_not be_true
|
---|
| 66 | end
|
---|
| 67 |
|
---|
| 68 | it 'should not be comperable to other class' do
|
---|
| 69 | @dv_proportion0.is_strictly_comparable_to?(1).
|
---|
| 70 | should_not be_true
|
---|
| 71 | end
|
---|
| 72 |
|
---|
| 73 | it 'should raise ArguentError with invalid type -1' do
|
---|
| 74 | lambda {
|
---|
| 75 | @dv_proportion0.type = -1
|
---|
| 76 | }.should raise_error ArgumentError
|
---|
| 77 | end
|
---|
| 78 |
|
---|
| 79 | it 'should raise ArgumentError with invalid type 5' do
|
---|
| 80 | lambda {
|
---|
| 81 | @dv_proportion0.type = 5
|
---|
| 82 | }.should raise_error ArgumentError
|
---|
| 83 | end
|
---|
| 84 |
|
---|
| 85 | it 's precision should be 0' do
|
---|
| 86 | @dv_proportion0.precision = 0
|
---|
| 87 | @dv_proportion0.precision.should == 0
|
---|
| 88 | end
|
---|
| 89 |
|
---|
| 90 | it 'should raise ArgumentError when is_integral? and precision !=0' do
|
---|
| 91 | lambda {@dv_proportion0.precision = 1}.should raise_error ArgumentError
|
---|
| 92 | end
|
---|
| 93 |
|
---|
| 94 | it 'shoud not raise ArgumentError when is_not ntegral' do
|
---|
| 95 | @dv_proportion0.numerator = 2.5
|
---|
| 96 | lambda {
|
---|
| 97 | @dv_proportion0.precision = 1
|
---|
| 98 | }.should_not raise_error ArgumentError
|
---|
| 99 | end
|
---|
| 100 | end
|
---|
| 101 |
|
---|
| 102 | describe 'PK_UNITARY type' do
|
---|
| 103 | it 'should be an instance of DvPropotion' do
|
---|
| 104 | @dv_proportion1.should be_an_instance_of DvProportion
|
---|
| 105 | end
|
---|
| 106 |
|
---|
| 107 | it 'should raise ArgumentError without denominator 1' do
|
---|
| 108 | lambda {
|
---|
| 109 | @dv_proportion1.denominator = 10
|
---|
| 110 | }.should raise_error ArgumentError
|
---|
| 111 | end
|
---|
| 112 | end
|
---|
| 113 |
|
---|
| 114 | describe 'PK_PERCENT type' do
|
---|
| 115 | it 'should be an instance of DvProportion' do
|
---|
| 116 | @dv_proportion2.should be_an_instance_of DvProportion
|
---|
| 117 | end
|
---|
| 118 |
|
---|
| 119 | it 'should raise ArgumentError without denominator 100' do
|
---|
| 120 | lambda {
|
---|
| 121 | @dv_proportion2.denominator = 101
|
---|
| 122 | }.should raise_error ArgumentError
|
---|
| 123 | end
|
---|
| 124 | end
|
---|
| 125 |
|
---|
| 126 | describe 'PK_FRACTION type' do
|
---|
| 127 | it 'should be an instance of DvProportion' do
|
---|
| 128 | @dv_proportion3.should be_an_instance_of DvProportion
|
---|
| 129 | end
|
---|
| 130 |
|
---|
| 131 | it 'should raise ArgumentError with fractional denominator' do
|
---|
| 132 | lambda {
|
---|
| 133 | @dv_proportion3.denominator = 0.5
|
---|
| 134 | }.should raise_error ArgumentError
|
---|
| 135 | end
|
---|
| 136 |
|
---|
| 137 | it 'should raise ArgumentError with fractional numerator' do
|
---|
| 138 | lambda {
|
---|
| 139 | @dv_proportion3.numerator = 0.5
|
---|
| 140 | }.should raise_error ArgumentError
|
---|
| 141 | end
|
---|
| 142 | end
|
---|
| 143 |
|
---|
| 144 | describe 'PK_FRACTION_INTEGER type' do
|
---|
| 145 | it 'should be an instance of DvProportion' do
|
---|
| 146 | @dv_proportion4.should be_an_instance_of DvProportion
|
---|
| 147 | end
|
---|
| 148 |
|
---|
| 149 | it 'should raise ArgumentError with fractional denominator' do
|
---|
| 150 | lambda {
|
---|
| 151 | @dv_proportion4.denominator = 0.5
|
---|
| 152 | }.should raise_error ArgumentError
|
---|
| 153 |
|
---|
| 154 | end
|
---|
| 155 |
|
---|
| 156 | it 'should raise ArgumentError with fractional numerator' do
|
---|
| 157 | lambda {
|
---|
| 158 | @dv_proportion4.numerator = 0.5
|
---|
| 159 | }.should raise_error ArgumentError
|
---|
| 160 | end
|
---|
| 161 | end
|
---|
| 162 | end
|
---|