tests/DotNetCommon.Test/AsyncLazyTests.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace DotNetCommon.Test
{
    using System;
    using System.Threading.Tasks;
    using NUnit.Framework;
    using Shouldly;
    using static System.Threading.Tasks.Task;

    [TestFixture]
    internal sealed class AsyncLazyTests
    {
        [Test]
        public async Task When_creating_an_instance_with_a_factory()
        {
            int counter = 0;

            int Factory()
            {
                counter++;
                return 42;
            }

            var lazy = new AsyncLazy<int>(Factory);

            var lazyResult = await lazy;

            lazy.IsValueCreated.ShouldBeTrue();

            lazyResult.ShouldBe(42);
            lazy.Value.Result.ShouldBe(42);

            counter.ShouldBe(1);
        }

        [Test]
        public async Task When_creating_an_instance_with_a_factory_and_getting_value_multiple_times()
        {
            var bs = new byte[10];
            
            int counter = 0;

            int Factory()
            {
                counter++;
                return 42;
            }

            var lazy = new AsyncLazy<int>(Factory);

            var lazyResultOne = await lazy;
            var lazyResultTwo = lazy.Value;
            var lazyResultThree = await lazy;

            lazyResultOne.ShouldBe(42);
            lazyResultTwo.Result.ShouldBe(42);
            lazyResultThree.ShouldBe(42);

            lazy.Value.Result.ShouldBe(42);

            counter.ShouldBe(1);
后面还有 56 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。