public void SkipShouldTrimDictionary()
        {
            // arrange
            var target = new Dictionary<string, int>()
            {
                { "Key1", 1 },
                { "Key2", 2 },
                { "Key3", 3 },
                { "Key4", 4 },
                { "Key5", 5 }
            };

            // act
            var actual = target.Skip( "Key2", "Key4" );

            // assert
            Assert.Equal( 3, actual.Count );
            Assert.True( actual.ContainsKey( "Key1" ) );
            Assert.False( actual.ContainsKey( "Key2" ) );
            Assert.True( actual.ContainsKey( "Key3" ) );
            Assert.False( actual.ContainsKey( "Key4" ) );
            Assert.True( actual.ContainsKey( "Key5" ) );
        }
        public void should_map_non_generic_dictionary_to_generic_enumerable_of_dictionary_entry()
        {
            var results = new Dictionary<string, object>
                {{"oh", 1}, {"hai", 2}}.As<IDictionary>().AsEnumerable();
            results.ShouldTotal(2);

            var result = results.First();
            result.ShouldBeType<DictionaryEntry>();
            result.Key.ShouldEqual("oh");
            result.Value.ShouldEqual(1);

            result = results.Skip(1).First();
            result.ShouldBeType<DictionaryEntry>();
            result.Key.ShouldEqual("hai");
            result.Value.ShouldEqual(2);
        }
        private static InputFile LoadInputFile(string filePath)
        {
            var fileRowData = new Dictionary<int, IRow>();

            using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                int index = 0;
                var uploadedExcel = new XSSFWorkbook(fs);
                //get data sheet
                ISheet dataSheet = uploadedExcel.GetSheetAt(0);
                // preload into memory and close the stream
                IEnumerator rowEnumerator = dataSheet.GetEnumerator();
                while (rowEnumerator.MoveNext())
                {
                    fileRowData.Add(index, (IRow) rowEnumerator.Current);
                    index++;
                }
            }
            //take header rows
            List<IRow> header = fileRowData.Take(1).ToList().ConvertAll(x => x.Value);
            //skip header rows
            List<ProductInputRow> productInputRowData =
                fileRowData.Skip(1).ToList().ConvertAll(x => Converter.Convert(x.Value, x.Key, header.Last()))
                    .Where(x => !x.AllStringPropertiesNullOrEmpty())
                    // filter out blanked out data: NPOI reads them as rows
                    .ToList();
            return new InputFile {Header = header, Data = productInputRowData};
        }