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()); } }