anchor.diff:    mem.Flush()
     let saved = Encoding.GetEncoding(1252).GetString(mem.ToArray())
     let parsed2 = ParaValue.Parse saved
  -  parsed2 |> shouldEqual parsed+  parsed2 |> shouldEqual parsed
  +
  +let (``try parse double cases``:obj[][]) = [|
  +  [| "1.000"; Some(1.0) |]
  +  [| "-1.000"; Some(-1.0) |]
  +  [| "15"; Some(15.0) |]
  +  [| "-15"; Some(-15.0) |]
  +  [| ""; None |]
  +  [| "1.0000"; None |]
  +  [| "1.a00"; None |]
  +  [| "1.0a0"; None |]
  +  [| "1.00a"; None |]
  +  [| "1e10"; None |]
  +  [| "1.1.1"; None |]
  +|]
  +
  +[<Test>]
  +[<TestCaseSource("try parse double cases")>]
  +let ``try parse double`` str expected =
  +  str |> tryDoubleParse |> shouldEqual expected
  +
  +let (``try parse date cases``:obj[][]) = [|
  +  [| "1.1.1"; Some(new DateTime(1, 1, 1)) |]
  +  [| "1942.5.2.4"; Some(new DateTime(1942, 5, 2, 4, 0, 0)) |]
  +  [| "1.a.1"; None |]
  +  [| "1!1.1"; None |]
  +  [| "1.1"; None |]
  +|]
  +
  +[<Test>]
  +[<TestCaseSource("try parse date cases")>]
  +let ``try parse date`` str expected =
  +  str |> tryDateParse |> shouldEqual expected
  
positive.code:         ParaValue.Record(
            [| ("name", ParaValue.String "1st army");
               ("unit", ParaValue.Record(
                  [|("name", ParaValue.String "1st unit")|])) 
            |]));
         ("army",
          ParaValue.Record(
  
negative.code: 
  let shouldEqual (x : 'a) (y : 'a) = Assert.AreEqual(x, y, sprintf "Expected: %A\nActual: %A" x y)
  
  let parse str =
    match (ParaValue.Parse str) with
    | ParaValue.Record properties -> properties
    | _ -> failwith "Expected a record"
  