/// <summary>
        /// Using CSV-like results fetched from Scalarm (list of ValuesMap) and knowning input parameter ids,
        /// create a list of SimulationParams, which have Input and Output fields that contain values maps
        /// splitted into input parameters and output (results).
        /// </summary>
        /// <returns>List of SimulationParams objects. Each is a result from single simulation run.</returns>
        /// <param name="results">Results fetched from Scalarm in form of list of ValuesMap (see GetResults HTTP method).</param>
        /// <param name="parametersIds">Ids of input parameters for disinguishing input parameters from outputs.</param>
        public virtual IList <SimulationParams> MakeResults(IList <ValuesMap> results, IList <string> parametersIds)
        {
            List <SimulationParams> convertedResults = new List <SimulationParams>();

            foreach (var result in results)
            {
                ValuesMap input  = new ValuesMap();
                ValuesMap output = new ValuesMap();

                SimulationParams singleResult = new SimulationParams(input, output);

                foreach (string id in result.Keys)
                {
                    if (parametersIds.Contains(id))
                    {
                        singleResult.Input.Add(id, result[id]);
                    }
                    else
                    {
                        singleResult.Output.Add(id, result[id]);
                    }
                }

                convertedResults.Add(singleResult);
            }

            return(convertedResults);
        }
        public void TestCastFromPair()
        {
            var v1 = new ValuesMap()
            {
                { "a", 1 }
            };
            var v2 = new ValuesMap()
            {
                { "b", 2 }
            };
            var pair = new KeyValuePair <ValuesMap, ValuesMap>(v1, v2);

            SimulationParams converted = (SimulationParams)pair;

            Assert.AreEqual(1, converted.Input["a"]);
            Assert.AreEqual(2, converted.Output["b"]);

            var list = new List <KeyValuePair <ValuesMap, ValuesMap> > ()
            {
                new KeyValuePair <ValuesMap, ValuesMap>(v1, v2)
            };

            Assert.AreEqual(1, list.Select(p => (SimulationParams)p).ToList()[0].Input["a"]);
        }