Skip to content

Commit 1541a2a

Browse files
add some io utils, finalise testing
1 parent 1e046ef commit 1541a2a

File tree

4 files changed

+44
-4
lines changed

4 files changed

+44
-4
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
.idea/
1+
.idea/
2+
myCardDeck

deck.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package main
22

33
import (
44
"fmt"
5+
"io/ioutil"
56
"math/rand"
7+
"os"
8+
"strings"
69
"time"
710
)
811

@@ -49,6 +52,28 @@ func (d deck) print() {
4952
}
5053
}
5154

55+
func deal(d deck, handSize int) (deck, deck) {
56+
return d[:handSize], d[handSize:]
57+
}
58+
59+
func (d deck) toString() string {
60+
return strings.Join(d, ",")
61+
}
62+
63+
func (d deck) saveToFile(filename string) error {
64+
return ioutil.WriteFile(filename, []byte(d.toString()), 0666)
65+
}
66+
67+
func newDeckFromFile(filename string) deck {
68+
bs, err := ioutil.ReadFile(filename)
69+
if err != nil {
70+
fmt.Println("Error: ", err)
71+
os.Exit(1)
72+
}
73+
sliceOfStrings := strings.Split(string(bs), ",")
74+
return sliceOfStrings
75+
}
76+
5277
func (d deck) shuffle() {
5378
source := rand.NewSource(time.Now().UnixNano())
5479
r := rand.New(source)

deck_test.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
11
package main
22

3-
import "testing"
3+
import (
4+
"os"
5+
"testing"
6+
)
47

58
func TestNewDeck(t *testing.T) {
69
deck := newDeck()
710
if len(deck) != 52 {
811
t.Errorf("Expected deck length of 52, but got %d", len(deck))
912
}
10-
1113
if deck[0] != "Ace of Spades" {
1214
t.Errorf("Expected first card to be Ace of Spades, but got %s", deck[0])
1315
}
14-
1516
if deck[len(deck)-1] != "King of Clubs" {
1617
t.Errorf("Expected last card to be King of Clubs, but got %s", deck[len(deck)-1])
1718
}
1819
}
20+
21+
func TestSaveToDeckAndNewDeckFromFile(t *testing.T) {
22+
os.Remove("_deckTesting")
23+
deck := newDeck()
24+
deck.saveToFile("_deckTesting")
25+
26+
loadedDeck := newDeckFromFile("_deckTesting")
27+
if len(loadedDeck) != 52 {
28+
t.Errorf("Expected deck length of 52, but got %d", len(loadedDeck))
29+
}
30+
os.Remove("_deckTesting")
31+
}

main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ func main() {
44
cards := newDeck()
55
cards.shuffle()
66
cards.print()
7+
cards.saveToFile("myCardDeck")
78
}

0 commit comments

Comments
 (0)