refactor: rename NovaDbXxx to NovaXxx across entire project
copilot-swe-agent[bot] authored at 2026-02-18 20:12:17
2.09 KiB
NewLife.NovaDb
using System;
using System.IO;
using NewLife.NovaDb.Core;
using NewLife.NovaDb.WAL;
using Xunit;

namespace XUnitTest.WAL;

public class WalWriterTests : IDisposable
{
    private readonly string _walFile;

    public WalWriterTests()
    {
        _walFile = Path.Combine(Path.GetTempPath(), $"test_{Guid.NewGuid()}.wal");
    }

    public void Dispose()
    {
        if (File.Exists(_walFile))
        {
            File.Delete(_walFile);
        }
    }

    [Fact]
    public void TestWriteAndReadWalRecord()
    {
        using (var writer = new WalWriter(_walFile, WalMode.Full))
        {
            writer.Open();

            var record = new WalRecord
            {
                TxId = 1,
                RecordType = WalRecordType.BeginTx
            };

            var lsn = writer.Write(record);
            Assert.Equal(1UL, lsn);

            var record2 = new WalRecord
            {
                TxId = 1,
                RecordType = WalRecordType.CommitTx
            };

            var lsn2 = writer.Write(record2);
            Assert.Equal(2UL, lsn2);
        }

        Assert.True(File.Exists(_walFile));
        Assert.True(new FileInfo(_walFile).Length > 0);
    }

    [Fact]
    public void TestWalModes()
    {
        using (var writer = new WalWriter(_walFile, WalMode.Full))
        {
            writer.Open();
            var record = new WalRecord { TxId = 1, RecordType = WalRecordType.BeginTx };
            writer.Write(record);
        }

        Assert.True(File.Exists(_walFile));
    }

    [Fact]
    public void TestPageUpdateRecord()
    {
        using var writer = new WalWriter(_walFile, WalMode.Full);
        writer.Open();

        var pageData = new byte[100];
        for (int i = 0; i < pageData.Length; i++)
        {
            pageData[i] = (byte)(i % 256);
        }

        var record = new WalRecord
        {
            TxId = 1,
            RecordType = WalRecordType.UpdatePage,
            PageId = 5,
            Data = pageData
        };

        var lsn = writer.Write(record);
        Assert.Equal(1UL, lsn);
        Assert.Equal(1UL, record.Lsn);
    }
}