6月23日

今日やったこと

ワーキングメモリーレーニン

勉強

ゲーム開発

PlayerPresenterの作成

using UnityEngine;
using Zenject;
using Domain.UseCase;

namespace Presentation.Presenter
{
    public class PlayerPresenter : IPlayerPresenter{

        private IPlayerView playerView;

        public Transform Tr => playerView.Tr;

        [Inject] IFactory<IPlayerView> playerViewFactory;

        public IPlayerView CreatePlayer(){
            playerView =  playerViewFactory.Create();
            return playerView;
        }

        public void UpdatePlayerPosition(Vector3 pos){
            playerView.UpdatePosition(pos);
        }
    }
}

IPlayerView インターフェース

using UnityEngine;

namespace Presentation.Presenter
{
    public interface IPlayerView {
        Transform Tr{get;}
        void UpdatePosition(Vector3 pos);
    }
}

これの単体テストはこんな感じ。

using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using Zenject;
using Presentation.Presenter;
using Presentation.View;
using Domain.UseCase;

namespace Tests
{
    public class PlayerPresenterTest : ZenjectUnitTestFixture
    {

        [SetUp]
        public void SetUp()
        {
            Container
                .Bind<IPlayerPresenter>()
                .To<PlayerPresenter>()
                .AsCached();

            Container
               .BindIFactory<IPlayerView>()
               .To<PlayerView>()
               .FromNewComponentOnNewGameObject();

            Container
                .Bind<IPlayerView>()
                .To<PlayerView>()
                .AsTransient();   
        }

        // A Test behaves as an ordinary method
        [Test]
        public void PlayerPresenterTestSimplePasses()
        {
            var playerPresenter = Container.Resolve<IPlayerPresenter>();
            Assert.IsNotNull(playerPresenter);

            var playerView = playerPresenter.CreatePlayer();
            Assert.IsNotNull(playerView);
            Assert.AreEqual(new Vector3(0, 1, 0), playerPresenter.Tr.position);
            Assert.AreEqual(new Vector3(0, 1, 0), playerView.Tr.position);

            playerPresenter.UpdatePlayerPosition(new Vector3(1, 1, 0));
            Assert.AreEqual(new Vector3(1, 1, 0), playerPresenter.Tr.position);
            Assert.AreEqual(new Vector3(1, 1, 0), playerView.Tr.position);

            playerPresenter.UpdatePlayerPosition(new Vector3(2, 1, 2));
            Assert.AreEqual(new Vector3(2, 1, 2), playerPresenter.Tr.position);
        }
    }
}

何とかテストを書いてるつもりだが、これでいいのだろうか...

PlayerEntityの作成

今回はPlayerは何の状態も持たないので空白にした

using UnityEngine;
using Zenject;
using UniRx;

public class PlayerEntity : IPlayerEntity
{

}

using UnityEngine;
using UniRx;

public interface IPlayerEntity
{

}

JINS MEME ESの測定結果

f:id:alberto_hojo:20190624002343p:plain:w250

作業時間 9h21m

集中時間 3h7m

集中率 33%