示例#1
0
        public void zero_cycle_interations_are_possible()
        {
            Enumerator_of_orders combinator = new Enumerator_of_orders(
                combinator_figure_requirements
                );

            Assert.IsFalse(combinator.MoveNext());
        }
示例#2
0
        private IList <Stencil_mapping> map_first_nodes(
            IStencil stencil, IFigure_representation target
            )
        {
            //get arrays of stencil's subnodes
            // index = figure;
            // value = appearances of its subfigures in the beginning of the stencil
            IList <IList <ISubfigure> > appearances_in_stencil = new List <IList <ISubfigure> >();

            //get array of target's subnodes
            IList <IList <ISubfigure> > appearances_in_target = new List <IList <ISubfigure> >();

            //initialise combinator
            int figures_qty = appearances_in_stencil.Count;

            // array of figures ->
            // array of their appearances in the stencil ->
            // target's subfigure onto which it's mapped
            var combinator_input = new List <Mapping_enumerator_requirement>();

            foreach (var appearances_in_source in appearances_in_stencil)
            {
                IFigure mapped_figure = appearances_in_source.First().referenced_figure;
                IReadOnlyList <ISubfigure> appearances_int_target =
                    get_appearances_of_figure_in_graph(mapped_figure, target);
                combinator_input.Add(
                    //array of stencil's subfigures which need mapping
                    new Mapping_enumerator_requirement(
                        appearances_in_source.Count, appearances_int_target.Count
                        )
                    );
            }

            Enumerator_of_orders enumerator_of_orders = new Enumerator_of_orders(
                combinator_input
                );


            //transform iterations of combinator into potential mappings
            foreach (var combination in enumerator_of_orders)
            {
                var test = combination;
            }

            IList <IList <ISubfigure> > subnode_occurances =
                get_all_subnodes_occurances(stencil, target);


            IList <Stencil_mapping> potential_mappings =
                recombine_subnodes_as_mappings(subnode_occurances);

            return(potential_mappings);
        }
示例#3
0
        private IList <Stencil_mapping> recombine_subnodes_as_mappings(
            IList <IList <ISubfigure> > subnode_occurances
            )
        {
            IList <Stencil_mapping> potential_mappings = new List <Stencil_mapping>();

            Enumerator_of_orders enumerator = new Enumerator_of_orders(

                );

            return(potential_mappings);
        }
示例#4
0
        public void loop_over_subnodes_combinations()
        {
            Enumerator_of_orders combinator = new Enumerator_of_orders(
                combinator_figure_requirements
                );

            int i_combination = 0;

            while (combinator.MoveNext())
            {
                if (i_combination == 12)
                {
                    int test = 1;
                }
                var actual_combination = combinator.get_combination_as_indexes();
                Assert.AreEqual(
                    result_total_combinations[i_combination],
                    actual_combination,
                    $"combination # {i_combination}"
                    );
                i_combination++;
            }
        }