require 'spec_helper' describe GeometricVector do describe '#initialize_by_numbers' do vector = GeometricVector.new(1, 2) it 'to be equal' do expect(vector.x).to eq(1) expect(vector.y).to eq(2) end it 'to be not equal' do expect(vector.x).not_to eq(3) expect(vector.y).not_to eq(3) end end describe '#initialize_by_array' do vector = GeometricVector.new_by_array([1, 2]) it 'to be equal' do expect(vector.x).to eq(1) expect(vector.y).to eq(2) end it 'to be not equal' do expect(vector.x).not_to eq(3) expect(vector.y).not_to eq(3) end end describe '#+' do it 'to be the addition of two vectors' do expect(GeometricVector.new(1, 2) + GeometricVector.new(3, 4)).to eq(GeometricVector.new(4, 6)) end end describe '#-' do it 'to be subtraction of two vectors' do expect(GeometricVector.new(1, 0) - GeometricVector.new(3, 4)).to eq(GeometricVector.new(-2, -4)) end end describe '#*' do it 'to be multipal of a point by scalar' do expect(GeometricVector.new(1, 2) * -2).to eq(GeometricVector.new(-2, -4)) end it 'to be multipal of a point by vector' do expect(-2 * GeometricVector.new(1, 2)).to eq(GeometricVector.new(-2, -4)) end end describe '#collinear_with?' do it 'to be collinear' do expect(GeometricVector.new(1, 2).collinear_with?GeometricVector.new(2, 4)).to eq(true) end it 'to be not collinear' do expect(GeometricVector.new(1, 2).collinear_with?GeometricVector.new(1, 1)).to eq(false) end it 'to be oppositely directed' do expect(GeometricVector.new(2, 2).collinear_with?GeometricVector.new(-2, -2)).to eq(true) end end describe '#cross_product' do it 'to be positive' do expect(GeometricVector.new(1, 0).cross_product(GeometricVector.new(0, 1))).to eq(1) end it 'to be negative' do expect(GeometricVector.new(0, 1).cross_product(GeometricVector.new(1, 0))).to eq(-1) end it 'to be zero' do expect(GeometricVector.new(1, 1).cross_product(GeometricVector.new(-2, -2))).to eq(0) end it 'to be unnormalized' do expect(GeometricVector.new(1, 1).cross_product(GeometricVector.new(-2, 2))).to eq(4) end end describe '#scalar_product' do it 'to be perpendicular' do expect(GeometricVector.new(1, 1).scalar_product(GeometricVector.new(-1, 1))).to eq(0) end it 'to be collinear' do expect(GeometricVector.new(1, 1).scalar_product(GeometricVector.new(-2, -2))).to eq(-4) end it 'to be inclined' do expect(GeometricVector.new(1, 1).scalar_product(GeometricVector.new(0, 1))).to eq(1) end end describe '#modulus' do it 'to be parallel to axis' do expect(GeometricVector.new(0, 1).modulus).to eq(1) expect(GeometricVector.new(1, 0).modulus).to eq(1) end it 'to be inclined' do expect(GeometricVector.new(1, 1).modulus).to eq(1.4142135623730951) end end end