/// <summary>Return true iff the tuple is full (all data sources contain this key).</summary> protected internal override bool Combine(object[] srcs, TupleWritable dst) { System.Diagnostics.Debug.Assert(srcs.Length == dst.Size()); for (int i = 0; i < srcs.Length; ++i) { if (!dst.Has(i)) { return(false); } } return(true); }
private void ValidateInnerKeyValue(IntWritable k, TupleWritable v, int tupleSize, bool firstTuple, bool secondTuple) { string kvstr = "Unexpected tuple: " + Stringify(k, v); NUnit.Framework.Assert.IsTrue(kvstr, v.Size() == tupleSize); int key = k.Get(); IntWritable val0 = null; IntWritable val1 = null; LongWritable val2 = null; NUnit.Framework.Assert.IsTrue(kvstr, key % 2 == 0 && key / 2 <= Items); NUnit.Framework.Assert.IsTrue(kvstr, key % 3 == 0 && key / 3 <= Items); NUnit.Framework.Assert.IsTrue(kvstr, key % 4 == 0 && key / 4 <= Items); if (firstTuple) { TupleWritable v0 = ((TupleWritable)v.Get(0)); val0 = (IntWritable)v0.Get(0); val1 = (IntWritable)v0.Get(1); val2 = (LongWritable)v.Get(1); } else { if (secondTuple) { val0 = (IntWritable)v.Get(0); TupleWritable v1 = ((TupleWritable)v.Get(1)); val1 = (IntWritable)v1.Get(0); val2 = (LongWritable)v1.Get(1); } else { val0 = (IntWritable)v.Get(0); val1 = (IntWritable)v.Get(1); val2 = (LongWritable)v.Get(2); } } NUnit.Framework.Assert.IsTrue(kvstr, val0.Get() == 0); NUnit.Framework.Assert.IsTrue(kvstr, val1.Get() == 1); NUnit.Framework.Assert.IsTrue(kvstr, val2.Get() == 2); }
/// <summary>Tests that we can write more than 64 values.</summary> /// <exception cref="System.Exception"/> public virtual void TestWideTupleBoundary() { Text emptyText = new Text("Should not be set written"); Writable[] values = new Writable[65]; Arrays.Fill(values, emptyText); values[64] = new Text("Should be the only value set written"); TupleWritable tuple = new TupleWritable(values); tuple.SetWritten(64); for (int pos = 0; pos < tuple.Size(); pos++) { bool has = tuple.Has(pos); if (pos == 64) { NUnit.Framework.Assert.IsTrue(has); } else { NUnit.Framework.Assert.IsFalse("Tuple position is incorrectly labelled as set: " + pos, has); } } }
/// <exception cref="System.Exception"/> public virtual void TestWideTuple2() { Text emptyText = new Text("Should be empty"); Writable[] values = new Writable[64]; Arrays.Fill(values, emptyText); values[9] = new Text("Number 9"); TupleWritable tuple = new TupleWritable(values); tuple.SetWritten(9); for (int pos = 0; pos < tuple.Size(); pos++) { bool has = tuple.Has(pos); if (pos == 9) { NUnit.Framework.Assert.IsTrue(has); } else { NUnit.Framework.Assert.IsFalse("Tuple position is incorrectly labelled as set: " + pos, has); } } }
/// <summary>Emit everything from the collector.</summary> protected internal override bool Combine(object[] srcs, TupleWritable dst) { System.Diagnostics.Debug.Assert(srcs.Length == dst.Size()); return(true); }