Index: /ruby/trunk/lib/open_ehr/am/archetype/assertion.rb
===================================================================
--- /ruby/trunk/lib/open_ehr/am/archetype/assertion.rb	(revision 389)
+++ /ruby/trunk/lib/open_ehr/am/archetype/assertion.rb	(revision 390)
@@ -94,4 +94,51 @@
         end
 
+        class ExprBinaryOperator < ExprOperator
+          attr_reader :right_operand, :left_operand
+
+          def initialize(args = { })
+            super
+            self.right_operand = args[:right_operand]
+            self.left_operand = args[:left_operand]
+          end
+
+          def right_operand=(right_operand)
+            if right_operand.nil?
+              raise ArgumentError, 'right_operand is mandatory'
+            end
+            @right_operand = right_operand
+          end
+
+          def left_operand=(left_operand)
+            if left_operand.nil?
+              raise ArgumentError, 'left_operand is mandatory'
+            end
+            @left_operand = left_operand
+          end
+        end
+
+        class AssertionVariable
+          attr_reader :name, :definition
+
+          def initialize(args = { })
+            self.name = args[:name]
+            self.definition = args[:definition]
+          end
+
+          def name=(name)
+            if name.nil?
+              raise ArgumentError, 'name is mandatory'
+            end
+            @name = name
+          end
+
+          def definition=(definition)
+            if definition.nil?
+              raise ArgumentError, 'definition is mandatory'
+            end
+            @definition = definition
+          end
+        end
+
         class OperatorKind
           OP_EQ = 2001
Index: /ruby/trunk/spec/lib/open_ehr/am/archetype/assertion/assertion_variable_spec.rb
===================================================================
--- /ruby/trunk/spec/lib/open_ehr/am/archetype/assertion/assertion_variable_spec.rb	(revision 390)
+++ /ruby/trunk/spec/lib/open_ehr/am/archetype/assertion/assertion_variable_spec.rb	(revision 390)
@@ -0,0 +1,30 @@
+require File.dirname(__FILE__) + '/../../../../../spec_helper'
+include OpenEHR::AM::Archetype::Assertion
+
+describe AssertionVariable do
+  before(:each) do
+    @assertion_variable =
+      AssertionVariable.new(:name => 'test',
+                            :definition => 'examine spec')
+  end
+
+  it 'name should be assigned properly' do
+    @assertion_variable.name.should == 'test'
+  end
+
+  it 'should raise ArgumentError when name is nil' do
+    lambda {
+      @assertion_variable.name = nil
+    }.should raise_error ArgumentError
+  end
+
+  it 'definition should be assigned properly' do
+    @assertion_variable.definition.should == 'examine spec'
+  end
+
+  it 'should raise ArgumentError if definiton is nil' do
+    lambda {
+      @assertion_variable.definition = nil
+    }.should raise_error ArgumentError
+  end
+end
Index: /ruby/trunk/spec/lib/open_ehr/am/archetype/assertion/expr_binary_operator.rb
===================================================================
--- /ruby/trunk/spec/lib/open_ehr/am/archetype/assertion/expr_binary_operator.rb	(revision 390)
+++ /ruby/trunk/spec/lib/open_ehr/am/archetype/assertion/expr_binary_operator.rb	(revision 390)
@@ -0,0 +1,40 @@
+require File.dirname(__FILE__) + '/../../../../../spec_helper'
+include OpenEHR::AM::Archetype::Assertion
+
+describe ExprBinaryOperator do
+  before(:each) do
+    operator = OperatorKind.new(:value => 2001)
+    right_operand = ExprItem.new(:type => 'Real')
+    left_operand = stub(ExprItem, :item => 'ANY')
+    @expr_binary_operator =
+      ExprBinaryOperator.new(:type => 'Integer',
+                             :item => 'ANY',
+                             :reference_type => 'operator',
+                             :operator => operator,
+                             :precedence_overridden => true,
+                             :right_operand => right_operand,
+                             :left_operand => left_operand)
+  end
+
+
+  it 'right_operand should be assigned properly' do
+    @expr_binary_operator.right_operand.type.should == 'Real'
+  end
+
+  it 'should raise ArgumentError when right_operand is nil' do
+    lambda {
+      @expr_binary_operator.right_operand = nil
+    }.should raise_error ArgumentError
+  end
+
+  it 'left_operand should be assigned properly' do
+    @expr_binary_operator.left_operand.item.should == 'ANY'
+  end
+
+  it 'should raise ArgumentError when left_oprand is nil' do
+    lambda {
+      @expr_binary_operator.left_operand = nil
+    }.should raise_error ArgumentError
+  end
+end
+
