anchor.diff:               ("unit", ParaValue.Record(
                   [|("name", ParaValue.String "1st unit")|]));
                ("unit", ParaValue.Record(
  -                [|("name", ParaValue.String "2nd unit")|])) 
  +                [|("name", ParaValue.String "2nd unit")|]))
             |]))
       |]
     obj |> shouldEqual expected
  
positive.code: [<Test>]
  let ``parse list of one quoted date`` () =
    parse "foo={\"1821.2.3\"}"
    |> shouldEqual [| ("foo", ParaValue.Array 
                        ([|ParaValue.Date (new DateTime(1821, 2, 3))|]))|]
  
  [<Test>]
  let ``parse list of two quoted`` () =
    parse "foo={\"bar\" \"biz baz\"}"
    |> shouldEqual [| ("foo", ParaValue.Array 
                        ([|ParaValue.String "bar";
                           ParaValue.String "biz baz"|]))|]
  
  
negative.code:   mem.Flush()
    let saved = Encoding.GetEncoding(1252).GetString(mem.ToArray())
    let parsed2 = ParaValue.Parse saved
    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
  