public void T04_PipeMux()
{
// setup the pipe...
PipeStagePartition p =
new PipeStagePartition("username",
new PipeStagePartition("table",
new PipeStageEnd()
)
);
Dictionary<QualifierExact, PipeStage> mux_map = new Dictionary<QualifierExact, PipeStage>();
mux_map.Add(new QualifierExact("path_a"),
new PipeStagePartition("suba", new PipeStageEnd()));
mux_map.Add(new QualifierExact("path_b"),
new PipeStagePartition("subb", new PipeStageEnd()));
PipeStageMux mux = new PipeStageMux("select_sub", mux_map);
PipeHdfContext ctx = new PipeHdfContext();
ctx.setQualifier("suba", "suba-keypart");
ctx.setQualifier("subb", "subb-keypart");
// test missing muxkey with no default
{
bool err = false;
try {
PipeRowQualifier builder = mux.generateRowFromContext(ctx);
}
catch (PipeGenerateException) {
err = true;
}
Assert.AreEqual(err, true, "non-default muxkey should throw exception");
}
// test mux defaults
{
PipeStageMux defmux = new PipeStageMux("select_sub", mux_map, new QualifierExact("path_a"));
PipeRowQualifier builder = defmux.generateRowFromContext(ctx);
Assert.AreEqual("/=path_a/=suba-keypart", builder.ToString());
}
// test suba
{
ctx.setQualifier("select_sub", "path_a");
PipeRowQualifier builder = mux.generateRowFromContext(ctx);
Assert.AreEqual("/=path_a/=suba-keypart", builder.ToString());
}
// test subb
{
ctx.setQualifier("select_sub", "path_b");
PipeRowQualifier builder = mux.generateRowFromContext(ctx);
Assert.AreEqual("/=path_b/=subb-keypart", builder.ToString());
}
}