Facebook
From Coral Duck, 4 Years ago, written in C#.
Embed
Download Paste or View Raw
Hits: 156
  1. using Castle.DynamicProxy;
  2. using Microsoft.Extensions.Hosting;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using Unity;
  7. using UnityAddon.Core;
  8. using UnityAddon.Core.Aop;
  9. using UnityAddon.Core.Attributes;
  10. using Xunit;
  11.  
  12. namespace UnityAddon.CoreTest.Bean.InterfaceBean
  13. {
  14.     [AttributeUsage(AttributeTargets.Interface)]
  15.     public class NoImplComponentAttribute : ComponentAttribute
  16.     {
  17.     }
  18.  
  19.     [NoImplComponent]
  20.     public interface INoImplService
  21.     {
  22.         public void Test();
  23.     }
  24.  
  25.     [AopAttribute(typeof(NoImplComponentAttribute))]
  26.     public class NoImplInterceptor : IInterceptor
  27.     {
  28.         [Dependency]
  29.         public Logger Logger { get; set; }
  30.  
  31.         public void Intercept(IInvocation invocation)
  32.         {
  33.             Logger.Log += "A";
  34.  
  35.             invocation.Proceed();
  36.         }
  37.     }
  38.  
  39.     [Component]
  40.     public class Logger
  41.     {
  42.         public string Log = "";
  43.     }
  44.  
  45.     [Trait("Bean", "GuidBean")]
  46.     public class InterfaceBeanTests
  47.     {
  48.         [Dependency]
  49.         public INoImplService NoImplService { get; set; }
  50.  
  51.         [Dependency]
  52.         public Logger Logger { get; set; }
  53.  
  54.         public InterfaceBeanTests()
  55.         {
  56.             Host.CreateDefaultBuilder()
  57.                 .RegisterUA()
  58.                 .ScanComponentsUA(GetType().Namespace)
  59.                 .ConfigureUA<AopInterceptorContainerBuilder>(c =>
  60.                 {
  61.                     c.AddAopIntercetor<NoImplInterceptor>();
  62.                 })
  63.                 .BuildUA()
  64.                 .BuildTestUA(this);
  65.         }
  66.  
  67.         [Fact]
  68.         public void BeanFactory_CreateInterfaceBean_InterfaceBeanCreated()
  69.         {
  70.             NoImplService.Test();
  71.  
  72.             Assert.Equal("A", Logger.Log);
  73.         }
  74.     }
  75. }
  76.