public async Task Spreadsheet_AddRow_CellWithVeryLongFormulaAndCachedValue(int length)
    {
        // Arrange
        var formulaText = FormulaGenerator.Generate(length);
        var cachedValue = new string('c', length);

        using var stream = new MemoryStream();
        var options = new SpreadCheetahOptions {
            BufferSize = SpreadCheetahOptions.MinimumBufferSize
        };

        await using (var spreadsheet = await Spreadsheet.CreateNewAsync(stream, options))
        {
            await spreadsheet.StartWorksheetAsync("Sheet");

            var formula = new Formula(formulaText);
            var cell    = new Cell(formula, cachedValue);

            // Act
            await spreadsheet.AddRowAsync(cell);

            await spreadsheet.FinishAsync();
        }

        // Assert
        SpreadsheetAssert.Valid(stream);
        using var workbook = new XLWorkbook(stream);
        var worksheet  = workbook.Worksheets.Single();
        var actualCell = worksheet.Cell(1, 1);

        Assert.Equal(formulaText, actualCell.FormulaA1);
        Assert.Equal(cachedValue, actualCell.Value);
    }
    public async Task Spreadsheet_AddRow_CellWithVeryLongStringValue(int length, Type type)
    {
        // Arrange
        var value = new string('a', length);

        using var stream = new MemoryStream();
        var options = new SpreadCheetahOptions {
            BufferSize = SpreadCheetahOptions.MinimumBufferSize
        };

        await using (var spreadsheet = await Spreadsheet.CreateNewAsync(stream, options))
        {
            await spreadsheet.StartWorksheetAsync("Sheet");

            var cell = CellFactory.Create(type, value);

            // Act
            await spreadsheet.AddRowAsync(cell);

            await spreadsheet.FinishAsync();
        }

        // Assert
        SpreadsheetAssert.Valid(stream);
        using var actual = SpreadsheetDocument.Open(stream, true);
        var sheetPart  = actual.WorkbookPart !.WorksheetParts.Single();
        var actualCell = sheetPart.Worksheet.Descendants <OpenXmlCell>().Single();

        Assert.Equal(CellValues.InlineString, actualCell.DataType?.Value);
        Assert.Equal(value, actualCell.InnerText);
    }