Skip to content

Instantly share code, notes, and snippets.

View GreenIcicle's full-sized avatar

Christian GreenIcicle

  • Zühlke Group
  • Germany
View GitHub Profile
@GreenIcicle
GreenIcicle / TestSubjectFactoryMethod.cs
Created April 22, 2013 17:59
Code Example: Implementation of a factory method for unit tests, used in http://blog.zuehlke.com/?p=1421
private Controller CreateSubject(
            string[] names = null,
            IDataSource dataSource = null)
{
    names = names ?? new[] { "Alice", "Bob", "Alfred" };
    if (dataSource == null)
    {
        var mock = new Mock<IDataSource>();
        mock.Setup(x => x.GetNames()).Returns(names);
        dataSource = mock.Object;
@GreenIcicle
GreenIcicle / TestSubjectBuilder.cs
Last active December 16, 2015 12:19
Code Example: Implementation of Builder pattern for test setups, used in http://blog.zuehlke.com/?p=1421
internal class ControllerBuilder
{
private IDataSource _dataSource;
private IEnumerable<string> _names = new[] {"Alice", "Bob", "Alfred"};
public ControllerBuilder WithDataSource(IDataSource dataSource)
{
_dataSource = dataSource;
return this;
}
[Fact]
public void Sort_by_first_letter()
{
// Arrange
var dataSource = new Mock<IDataSource>();
dataSource.Setup(x => x.GetNames()).Returns(new[] {"Alice", "Bob", "Alfred"});
var subject = new Controller(dataSource.Object);
// Act
subject.Filter("a");
@GreenIcicle
GreenIcicle / ByteArray.cs
Created July 3, 2012 11:15
Encapsulates an array of byte as an immutable type that is not frowned upon by FxCop.
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace GreenIcicle
{
public class ByteArray : IEnumerable<byte>
{
private readonly IEnumerable<byte> bytes;
@GreenIcicle
GreenIcicle / gist:3011144
Created June 28, 2012 12:42
Move up some directories
// Moves a directory up some levels.
// Can/should be changed to an extension method on DirectoryInfo.
private DirectoryInfo Up(DirectoryInfo directory, int levels)
{
while (levels > 0 && directory != null)
{
directory = directory.Parent;
levels--;
}