pub fn assert_eq(&self, other: &Self)
    where D: crate::ExchangeData+Hashable,
          R: crate::ExchangeData+Hashable,
          G::Timestamp: Lattice+Ord
    {
        self.negate()
            .concat(other)
            .assert_empty();
    }
Assert if the collections are ever different.

Because this is a dataflow fragment, the test is only applied as the computation is run. If the computation
is not run, or not run to completion, there may be un-exercised times at which the collections could vary.
Typically, a timely dataflow computation runs to completion on drop, and so clean exit from a program should
indicate that this assertion never found cause to complain.

# Examples

```
use differential_dataflow::input::Input;

::timely::example(|scope| {

let data = scope.new_collection_from(1 .. 10).1;

let odds = data.filter(|x| x % 2 == 1);
let evens = data.filter(|x| x % 2 == 0);

odds.concat(&evens)
.assert_eq(&data);
});
```
differential-dataflow/src/collection.rs