import qualified Data.List as List
import qualified Data.Text as Text
+import qualified Text.Printf as Printf
import Voting.Protocol
import Utils
(<$> [1..nQuests]) $ \quest -> Question
{ question_text = Text.pack $ "quest"<>show quest
, question_choices = (<$> [1..nChoices]) $ \choice -> Text.pack $ "choice"<>show choice
- , question_mini = zero
- , question_maxi = sum $ List.replicate nChoices one
+ , question_mini = one
+ , question_maxi = one -- sum $ List.replicate nChoices one
}
} where election_uuid = UUID "xLcs7ev6Jy6FHH"
makeVotes :: Election q -> [[Bool]]
makeVotes Election{..} =
- [ [ True | _choice <- question_choices quest ]
+ [ True : List.tail [ False | _choice <- question_choices quest ]
| quest <- election_questions
]
where
seed = 0
+titleElection :: Election q -> String
+titleElection Election{..} =
+ Printf.printf "(questions=%i)×(choices=%i)==%i"
+ nQuests nChoices (nQuests * nChoices)
+ where
+ nQuests = List.length election_questions
+ nChoices = List.foldr max 0 $ List.length . question_choices <$> election_questions
+
benchEncryptBallot :: forall q. Params q => Int -> Int -> Benchmark
benchEncryptBallot nQuests nChoices =
env setupEnv $ \ ~elec ->
- bench ("(nQuests="<>show nQuests<>")*(nChoices="<>show nChoices<>")=="<>show (nQuests * nChoices)) $
+ bench (titleElection elec) $
nf makeBallot elec
where
setupEnv = do
benchVerifyBallot :: forall q. Params q => Int -> Int -> Benchmark
benchVerifyBallot nQuests nChoices =
env setupEnv $ \ ~(elec,ballot) ->
- bench ("(nQuests="<>show nQuests<>")*(nChoices="<>show nChoices<>")=="<>show (nQuests * nChoices)) $
+ bench (titleElection elec) $
nf (verifyBallot elec) ballot
where
setupEnv = do
benchmarks :: [Benchmark]
benchmarks =
- -- let inputs = [(1,2), (5,5), (10,5), (5,10){-, (10,6), (10,7), (15,5)-}] in
let inputs =
[ (nQ,nC)
- | nQ <- [1,5,10,15{-,20,25-}]
- , nC <- [5..7]
+ | nQ <- [1,5,10,15,20,25]
+ , nC <- [5,7]
] in
[ bgroup "WeakParams"
[ bgroup "encryptBallot"