public void Reallocate_UncompressedFile_CopiesAllReordsAndVariables()
        {
            //after this test the new file is substantially smaller thean the original

            int originalRecordCount;
            int originalVariableCount;

            using (FileStream fileStream = new FileStream(@"TestFiles/230mbfile.sav.gz", FileMode.Open,
                                                          FileAccess.Read, FileShare.Read, 2048 * 10, FileOptions.SequentialScan))
                using (GZipStream deCompressStream = new GZipStream(fileStream, CompressionMode.Decompress, true))
                    using (MemoryStream memStream = new MemoryStream())
                    {
                        deCompressStream.CopyTo(memStream);

                        memStream.Position = 0;

                        SpssReader spssDataset = new SpssReader(memStream);

                        originalRecordCount   = spssDataset.Records.Count();
                        originalVariableCount = spssDataset.Variables.Count;

                        var deallocator = new DataReallocator();

                        // code under test
                        var records = deallocator.ReAllocateRecords(spssDataset.Records);

                        using (FileStream outputFileStream = new FileStream(@"TestFiles/34mbfile-after-reallocation.sav", FileMode.Create, FileAccess.Write))
                        {
                            using (var writer = new SpssWriter(outputFileStream, spssDataset.Variables, new SpssOptions()
                            {
                                Cases = originalRecordCount
                            }))
                            {
                                foreach (var record in records)
                                {
                                    var newRecord = writer.CreateRecord(record);
                                    writer.WriteRecord(newRecord);
                                }
                                writer.EndFile();
                            }
                        }
                    }

            var results = FileValidator.CheckSpssFile(@"TestFiles/34mbfile-after-reallocation.sav");

            Assert.AreEqual(originalRecordCount, results.RecordCount);
            Assert.AreEqual(originalVariableCount, results.VariableCount);
        }
        public void Reallocate_PSPPCompressedFile_CopiesAllReordsAndVariables()
        {
            //after this test the new file is the same size as the original

            int originalRecordCount;
            int originalVariableCount;

            using (FileStream fileStream = new FileStream(@"TestFiles/34mbfile.sav.gz", FileMode.Open,
                                                          FileAccess.Read, FileShare.Read, 2048 * 10, FileOptions.SequentialScan))
                using (GZipStream deCompressStream = new GZipStream(fileStream, CompressionMode.Decompress, true))
                    using (MemoryStream memStream = new MemoryStream())
                    {
                        deCompressStream.CopyTo(memStream);
                        memStream.Position = 0;

                        SpssReader spssDataset = new SpssReader(memStream);

                        originalRecordCount   = spssDataset.Records.Count();
                        originalVariableCount = spssDataset.Variables.Count();

                        var deallocator = new DataReallocator();

                        // code under test
                        var records = deallocator.ReAllocateRecords(spssDataset.Records);

                        var variables = spssDataset.Variables
                                        .Where(x => x.Name == "qhidimpconcepteval" || x.Name == "qhidimpproduct1")
                                        .ToList();

                        var datalist = new List <string>();

                        foreach (var record in records)
                        {
                            foreach (var variable in variables)
                            {
                                var data = record.GetValue(variable)?.ToString()?.Trim();

                                if (!string.IsNullOrEmpty(data))
                                {
                                    datalist.Add(data);
                                }
                            }
                        }

                        using (FileStream outputFileStream = new FileStream(@"4mbfile-after-reallocation.sav", FileMode.Create, FileAccess.Write))
                        {
                            using (var writer = new SpssWriter(outputFileStream, spssDataset.Variables, new SpssOptions()))
                            {
                                foreach (var record in records)
                                {
                                    var newRecord = writer.CreateRecord(record);
                                    writer.WriteRecord(newRecord);
                                }
                                writer.EndFile();
                            }
                        }
                    }

            var results = FileValidator.CheckSpssFile(@"4mbfile-after-reallocation.sav");

            Assert.AreEqual(originalRecordCount, results.RecordCount);
            Assert.AreEqual(originalVariableCount, results.VariableCount);
        }