public void ItGeneratesEnumDecoders()
        {
            var gen = new ElmCodeGenerator(Assembly.GetExecutingAssembly(), "SomeModule");

            gen.AddDecodeFun(typeof(SampleEnum));

            var code     = gen.GetCode();
            var expected =
                @"decodeSampleEnumValue : String -> Decoder SampleEnum
decodeSampleEnumValue s =
  case s of
    ""Option1"" ->
      Decode.succeed SampleEnumOption1
    ""Option2"" ->
      Decode.succeed SampleEnumOption2
    ""Option3"" ->
      Decode.succeed SampleEnumOption3
    _ ->
      Decode.fail (""Unknown value: "" ++ s)


decodeSampleEnum : Decoder SampleEnum
decodeSampleEnum =
  string
  |> andThen decodeSampleEnumValue


";

            Assert.Equal(expected, code);
        }
        public void ItGeneratesRecordDefs()
        {
            var gen = new ElmCodeGenerator(Assembly.GetExecutingAssembly(), "SomeModule");

            gen.AddTypeDef(typeof(SampleObject));

            var code     = gen.GetCode();
            var expected =
                @"type alias SampleObject =
  { id : Int
  , stuff : List String
  }

";

            Assert.Equal(expected, code);
        }