 
     x = new Interval(  b,  e)
     y = new Interval(a  ,c  )
-    (x.intersect(y).low  == b).should.be.true
-    (x.intersect(y).high == c).should.be.true
-    (y.intersect(x).low  == b).should.be.true
-    (y.intersect(x).high == c).should.be.true
+    x.intersect(y).should.eql new Interval(b, c)
+    y.intersect(x).should.eql new Interval(b, c)
 
     x = new Interval(a,b   )
     y = new Interval(  b,d )


  it 'should properly calculate before/after unions', ->
    [x, y] = xy @iIvl.before
    (x.closed.union(y.closed) == null).should.be.true
    (x.closed.union(y.open) == null).should.be.true
    (x.open.union(y.closed) == null).should.be.true
    (x.open.union(y.open) == null).should.be.true
    (y.closed.union(x.closed) == null).should.be.true
    (y.closed.union(x.open) == null).should.be.true
    (y.open.union(x.closed) == null).should.be.true
    (y.open.union(x.open) == null).should.be.true

  it 'should properly calculate meets unions', ->
    [x, y] = xy @iIvl.meets
    z = @zeroToHundred
    x.closed.union(y.closed).equals(z.closed).should.be.true
    (x.closed.union(y.open) == null).should.be.true
    (x.open.union(y.closed) == null).should.be.true
    (x.open.union(y.open) == null).should.be.true
    y.closed.union(x.closed).equals(z.closed).should.be.true
    (y.closed.union(x.open) == null).should.be.true
    (y.open.union(x.closed) == null).should.be.true
    (y.open.union(x.open) == null).should.be.true

  it 'should properly calculate left/right overlapping unions', ->
    [x, y] = xy @iIvl.overlaps


    x = new Interval(a,  d )
    y = new Interval(  b, e)
    x.except(y).should.eql new Interval(a, b, true, false)
    y.except(x).should.eql new Interval(d, e, false, true)

    x = new Interval(a,b,   )
    y = new Interval(    d,e)
