-
Notifications
You must be signed in to change notification settings - Fork 864
Expand file tree
/
Copy pathPrintTests.fs
More file actions
76 lines (61 loc) · 2.36 KB
/
Copy pathPrintTests.fs
File metadata and controls
76 lines (61 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
// Various tests for:
// Microsoft.FSharp.Core.ExtraTopLevelOperators.print
// Microsoft.FSharp.Core.ExtraTopLevelOperators.printn
namespace FSharp.Core.UnitTests
open System
open System.IO
open Xunit
[<Collection(nameof FSharp.Test.NotThreadSafeResourceCollection)>]
type PrintTests() =
let captureConsoleOut (f: unit -> unit) =
let oldOut = Console.Out
use sw = new StringWriter()
Console.SetOut(sw)
try
f ()
sw.ToString()
finally
Console.SetOut(oldOut)
[<Fact>]
member _.``print writes string value``() =
let result = captureConsoleOut (fun () -> print "hello")
Assert.Equal("hello", result)
[<Fact>]
member _.``print writes integer value``() =
let result = captureConsoleOut (fun () -> print 42)
Assert.Equal("42", result)
[<Fact>]
member _.``print writes float with InvariantCulture``() =
let result = captureConsoleOut (fun () -> print 3.14)
Assert.Equal("3.14", result)
[<Fact>]
member _.``print writes bool value``() =
let result = captureConsoleOut (fun () -> print true)
Assert.Equal("True", result)
[<Fact>]
member _.``print writes Some value``() =
let result = captureConsoleOut (fun () -> print (Some 42))
Assert.Equal("Some(42)", result)
[<Fact>]
member _.``print writes None value``() =
let result = captureConsoleOut (fun () -> print None)
Assert.Equal("", result)
[<Fact>]
member _.``print writes list value``() =
let result = captureConsoleOut (fun () -> print [1; 2; 3])
Assert.Equal("[1; 2; 3]", result)
[<Fact>]
member _.``printn writes value followed by newline``() =
let result = captureConsoleOut (fun () -> printn "hello")
Assert.Equal("hello" + Environment.NewLine, result)
[<Fact>]
member _.``multiple prints concatenate``() =
let result = captureConsoleOut (fun () ->
print "Hello, "
print "World!")
Assert.Equal("Hello, World!", result)
[<Fact>]
member _.``printn writes integer with newline``() =
let result = captureConsoleOut (fun () -> printn 42)
Assert.Equal("42" + Environment.NewLine, result)