Index: /inundation/ga/storm_surge/pyvolution/mesh.py
===================================================================
--- /inundation/ga/storm_surge/pyvolution/mesh.py	(revision 600)
+++ /inundation/ga/storm_surge/pyvolution/mesh.py	(revision 601)
@@ -242,9 +242,10 @@
                 a, b = self.neighbours.shape
                 assert vol_id < a and edge_id < b, msg
-                
-                msg = 'Segment (%d, %d) is not a boundary' %(vol_id, edge_id)
-                assert self.neighbours[vol_id, edge_id] < 0, msg
-
-            #Check that all boundary segments are assigned a value
+
+                #FIXME: This assert violates internal boundaries (delete it)
+                #msg = 'Segment (%d, %d) is not a boundary' %(vol_id, edge_id)
+                #assert self.neighbours[vol_id, edge_id] < 0, msg
+
+            #Check that all boundary segments are assigned a tag
             for vol_id in range(self.number_of_elements):
                 for edge_id in range(0, 3):
@@ -259,4 +260,9 @@
                             #FIXME: Print only as per verbosity
                             #print msg
+
+                            #FIXME: Make this situation an error in the future
+                            #and make another function which will
+                            #enable default boundary-tags where
+                            #tags a not specified
                             boundary[ (vol_id, edge_id) ] =\
                                       default_boundary_tag
@@ -429,8 +435,11 @@
         #NOTE: This assert doesn't hold true if there are internal boundaries
         #FIXME: Look into this further.
-        #for id, edge in self.boundary:
-        #    assert self.neighbours[id,edge] < 0
-
-
+        #FIXME: In mark 3 this seems to be OK, which I think is good.
+        for id, edge in self.boundary:
+            assert self.neighbours[id,edge] < 0
+
+
+        
+            
     def get_centroid_coordinates(self):
         """Return all centroid coordinates.
Index: /inundation/ga/storm_surge/pyvolution/test_mesh.py
===================================================================
--- /inundation/ga/storm_surge/pyvolution/test_mesh.py	(revision 600)
+++ /inundation/ga/storm_surge/pyvolution/test_mesh.py	(revision 601)
@@ -496,5 +496,5 @@
 
 
-    def test_boundary_inputs_using_defaults(self):
+    def test_boundary_inputs_using_one_default(self):
         a = [0.0, 0.0]
         b = [0.0, 2.0]
@@ -529,4 +529,42 @@
             assert mesh.neighbours[vol_id, edge_id] == b
 
+    def test_boundary_inputs_using_all_defaults(self):
+        a = [0.0, 0.0]
+        b = [0.0, 2.0]
+        c = [2.0,0.0]
+        d = [0.0, 4.0]
+        e = [2.0, 2.0]
+        f = [4.0,0.0]
+
+        points = [a, b, c, d, e, f]
+
+        #bac, bce, ecf, dbe
+        vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4] ]
+
+        boundary = { (0, 0): 'First',
+                     (0, 2): 'Second',
+                     (2, 0): 'Third',
+                     (2, 1): 'Fourth',
+                     #(3, 1): 'Fifth',  #Skip this
+                     (3, 2): 'Sixth'}                                         
+                     
+        
+        mesh = Mesh(points, vertices) #, boundary)        
+        mesh.check_integrity()
+
+        from config import default_boundary_tag
+        assert mesh.boundary[ (0, 0) ] == default_boundary_tag
+        assert mesh.boundary[ (0, 2) ] == default_boundary_tag
+        assert mesh.boundary[ (2, 0) ] == default_boundary_tag
+        assert mesh.boundary[ (2, 1) ] == default_boundary_tag                
+        assert mesh.boundary[ (3, 1) ] == default_boundary_tag
+        assert mesh.boundary[ (3, 2) ] == default_boundary_tag                
+
+
+        #Check enumeration
+        for k, (vol_id, edge_id) in enumerate(mesh.boundary_segments):        
+            b = -k-1
+            assert mesh.neighbours[vol_id, edge_id] == b
+
 
 
@@ -579,11 +617,14 @@
             raise 'Should have raised an exception'
 
+        #FIXME: This has been commented out pending a decision
+        #whether to allow partial boundary tags or not
+        #
         #Not specifying all boundary tags
-        try:
-            mesh = Mesh(points, vertices, {(3,0): 'x'})        
-        except AssertionError:
-            pass
-        else:
-            raise 'Should have raised an exception'
+        #try:
+        #    mesh = Mesh(points, vertices, {(3,0): 'x'})        
+        #except AssertionError:
+        #    pass
+        #else:
+        #    raise 'Should have raised an exception'
 
         #Specifying wrong non existing segment
@@ -612,5 +653,5 @@
         boundary[(2,0)] = 'internal'
         boundary[(1,0)] = 'internal'
-        
+
         #Create shallow water domain
         domain = Domain(points, vertices, boundary)
