using System;
using System. Collections;
using MyLib;
namespace ConsoleApp2
{
class Program
{
static void Main ( string [ ] args)
{
var fan = new DeskFan ( new PowerSupply ( ) ) ;
Console. WriteLine ( fan. Work ( ) ) ;
}
}
public interface IPowerSupply
{
int GetPower ( ) ;
}
public class PowerSupply : IPowerSupply
{
public int GetPower ( )
{
return 200 ;
}
}
public class DeskFan
{
private IPowerSupply _powerSupply;
public DeskFan ( IPowerSupply powerSupply)
{
_powerSupply = powerSupply;
}
public string Work ( )
{
int power = _powerSupply. GetPower ( ) ;
if ( power <= 0 )
{
return "Won't work" ;
} else if ( power < 100 )
{
return "Slow" ;
} else if ( power < 200 )
{
return "Work fine" ;
} else
{
return "Explode" ;
}
}
}
}
using Moq;
using System;
using Xunit;
namespace ConsoleApp2. Tests
{
public class DeskFanTests
{
[ Fact ]
public void PowerLowerThanZero_OK ( )
{
var mock = new Mock < IPowerSupply > ( ) ;
mock. Setup
( ps = > ps. GetPower ( ) ) . Returns ( ( ) = > 0 ) ;
var fan = new DeskFan ( mock. Object) ;
var expected = "" ;
Console. WriteLine ( fan. Work ( ) ) ;
}
[ Fact ]
public void PowerHigherThan200_Warning ( )
{
var mock = new Mock < IPowerSupply > ( ) ;
mock. Setup ( pss = > pss. GetPower ( ) ) . Returns ( ( ) = > 220 ) ;
var fan = new DeskFan ( mock. Object) ;
var expected = "Explode" ;
var actual = fan. Work ( ) ;
Assert. Equal ( expected, actual) ;
}
}
class PowerSupplyLowerThanZero : IPowerSupply
{
public int GetPower ( )
{
return 0 ;
}
}
class PowerSupplyHigherThan200 : IPowerSupply
{
public int GetPower ( )
{
return 220 ;
}
}
}