public void testExtraInput()
        {
            StagingTable table = new StagingTable();

            table.setId("test_table");
            StagingColumnDefinition def1 = new StagingColumnDefinition();

            def1.setKey("input1");
            def1.setName("Input 1");
            def1.setType(ColumnType.INPUT);
            StagingColumnDefinition def2 = new StagingColumnDefinition();

            def2.setKey("result1");
            def2.setName("Result1");
            def2.setType(ColumnType.ENDPOINT);
            table.setColumnDefinitions(new List <IColumnDefinition>()
            {
                def1, def2
            });
            table.setRawRows(new List <List <String> >());
            table.getRawRows().Add(new List <String>()
            {
                "1", "MATCH"
            });
            table.getRawRows().Add(new List <String>()
            {
                "2", "VALUE:{{extra1}}"
            });
            table.getRawRows().Add(new List <String>()
            {
                "{{extra2}}", "MATCH"
            });
            table.getRawRows().Add(new List <String>()
            {
                "{{ctx_year_current}}", "MATCH"
            });
            table.getRawRows().Add(new List <String>()
            {
                "5", "VALUE:{{ctx_year_current}}"
            });
            table.getRawRows().Add(new List <String>()
            {
                "6", "MATCH:{{match_extra}}"
            });
            table.getRawRows().Add(new List <String>()
            {
                "7", "ERROR:{{error_extra}}"
            });

            StagingDataProvider.initTable(table);

            HashSet <String> hash1 = new HashSet <String>()
            {
                "extra1", "extra2"
            };
            HashSet <String> hash2 = table.getExtraInput();

            // since context variables are not user-supplied, they should not be included in the extra input
            Assert.IsTrue(hash1.SetEquals(hash2));

            table.setRawRows(new List <List <String> >());
            table.getRawRows().Add(new List <String>()
            {
                "{{ctx_year_current}}", "MATCH"
            });

            StagingDataProvider.initTable(table);

            Assert.IsNull(table.getExtraInput());
        }