implemented posSearch
This commit is contained in:
parent
457298e565
commit
25e4929f0b
|
@ -26,6 +26,8 @@ module Mtlstats.Helpers.Position
|
||||||
, getPositions
|
, getPositions
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import Data.Char (toUpper)
|
||||||
|
import Data.List (isInfixOf)
|
||||||
import qualified Data.Set as S
|
import qualified Data.Set as S
|
||||||
import Lens.Micro ((^.))
|
import Lens.Micro ((^.))
|
||||||
|
|
||||||
|
@ -39,7 +41,10 @@ posSearch
|
||||||
-- ^ The database
|
-- ^ The database
|
||||||
-> [(Int, String)]
|
-> [(Int, String)]
|
||||||
-- ^ A list of result indices and their values
|
-- ^ A list of result indices and their values
|
||||||
posSearch = undefined
|
posSearch sStr db = filter sFunc $ zip [0..] ps
|
||||||
|
where
|
||||||
|
sFunc (_, pos) = map toUpper sStr `isInfixOf` map toUpper pos
|
||||||
|
ps = getPositions db
|
||||||
|
|
||||||
-- | Searches the 'Database' for an exact position
|
-- | Searches the 'Database' for an exact position
|
||||||
posSearchExact
|
posSearchExact
|
||||||
|
|
|
@ -22,23 +22,42 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
module Helpers.PositionSpec (spec) where
|
module Helpers.PositionSpec (spec) where
|
||||||
|
|
||||||
import Lens.Micro ((&), (.~))
|
import Lens.Micro ((&), (.~))
|
||||||
import Test.Hspec (Spec, describe, it, shouldBe)
|
import Test.Hspec (Spec, context, describe, it, shouldBe)
|
||||||
|
|
||||||
import Mtlstats.Helpers.Position
|
import Mtlstats.Helpers.Position
|
||||||
import Mtlstats.Types
|
import Mtlstats.Types
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = describe "Position"
|
spec = describe "Position" $ do
|
||||||
|
posSearchSpec
|
||||||
getPositionsSpec
|
getPositionsSpec
|
||||||
|
|
||||||
|
posSearchSpec :: Spec
|
||||||
|
posSearchSpec = describe "posSearch" $ mapM_
|
||||||
|
(\(sStr, expected) -> context ("search string: " ++ show sStr) $
|
||||||
|
it ("should be " ++ show expected) $
|
||||||
|
posSearch sStr db `shouldBe` expected)
|
||||||
|
[ ( "fOo"
|
||||||
|
, [ ( 2, "foo" )
|
||||||
|
]
|
||||||
|
)
|
||||||
|
, ( "A"
|
||||||
|
, [ ( 0, "bar" )
|
||||||
|
, ( 1, "baz" )
|
||||||
|
]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
getPositionsSpec :: Spec
|
getPositionsSpec :: Spec
|
||||||
getPositionsSpec = describe "getPositions" $ let
|
getPositionsSpec = describe "getPositions" $ let
|
||||||
|
expected = ["bar", "baz", "foo"]
|
||||||
|
in it ("should be " ++ show expected) $
|
||||||
|
getPositions db `shouldBe` expected
|
||||||
|
|
||||||
|
db :: Database
|
||||||
db = newDatabase & dbPlayers .~
|
db = newDatabase & dbPlayers .~
|
||||||
[ newPlayer 2 "Joe" "foo"
|
[ newPlayer 2 "Joe" "foo"
|
||||||
, newPlayer 3 "Bob" "bar"
|
, newPlayer 3 "Bob" "bar"
|
||||||
, newPlayer 5 "Bill" "foo"
|
, newPlayer 5 "Bill" "foo"
|
||||||
, newPlayer 8 "Ed" "baz"
|
, newPlayer 8 "Ed" "baz"
|
||||||
]
|
]
|
||||||
expected = ["bar", "baz", "foo"]
|
|
||||||
in it ("should be " ++ show expected) $
|
|
||||||
getPositions db `shouldBe` expected
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user