Skip to content

Commit 2dc34a9

Browse files
committed
Add tryGetTable + tests
1 parent 76be475 commit 2dc34a9

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/Core/Table/ArcTables.fs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,10 @@ type ArcTables(initTables:ResizeArray<ArcTable>) =
208208
SanityChecks.validateSheetIndex index false this.Tables
209209
this.Tables.[index]
210210

211+
// - Table API - //
212+
member this.TryGetTable (tableIdentifier: string) =
213+
this.Tables |> Seq.tryFind(fun s -> s.Name = tableIdentifier)
214+
211215
// - Table API - //
212216
member this.GetTable(name: string) : ArcTable =
213217
findIndexByTableName name this.Tables

tests/Core/ArcTables.Tests.fs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,19 @@ let tests_member = testList "member" [
162162
let arctables = ArcTables(ResizeArray tableSeq)
163163
let _ = arctables.InitTable("New Table!")
164164
Expect.sequenceEqual arctables.TableNames ["Table 1"; "Table 2"; "New Table!"] "TableNames"
165+
testList "TryGetTable" [
166+
let expectedTable = ArcTable.init("Table 1")
167+
testCase "Should return some table" <| fun _ ->
168+
let tableSeq = [ArcTable.init("Table 1"); ArcTable.init("Table 2")]
169+
let arctables = ArcTables(ResizeArray tableSeq)
170+
let t = Expect.wantSome (arctables.TryGetTable("Table 1")) "Did not return some"
171+
Expect.equal t expectedTable "tryGetTable did not return expected table"
172+
testCase "Should return none" <| fun _ ->
173+
let tableSeq = [ArcTable.init("Table 1"); ArcTable.init("Table 2")]
174+
let arctables = ArcTables(ResizeArray tableSeq)
175+
let t = arctables.TryGetTable("Table 999999999")
176+
Expect.isNone t "tryGetTable did not return none"
177+
]
165178
testList "MoveTable" [
166179
testCase "Move to end" <| fun _ ->
167180
let actual = ResizeArray [for i in 0 .. 5 do ArcTable.init(sprintf "Table %i" i)] |> ArcTables

0 commit comments

Comments
 (0)