chore: Version 0.3 #136
|
@ -0,0 +1,33 @@
|
|||
import Lean.Meta
|
||||
import Lean.Elab
|
||||
import LSpec
|
||||
import Test.Common
|
||||
|
||||
open Lean
|
||||
|
||||
namespace Pantograph.Test.Tactic.Assign
|
||||
|
||||
def test_draft : TestT Elab.TermElabM Unit := do
|
||||
let expr := "forall (p : Prop), (p ∨ p) ∨ p"
|
||||
let skeleton := "by\nhave a : p ∨ p := sorry\nsorry"
|
||||
let expr ← parseSentence expr
|
||||
Meta.forallTelescope expr $ λ _ body => do
|
||||
let skeleton' ← match Parser.runParserCategory
|
||||
(env := ← MonadEnv.getEnv)
|
||||
(catName := `term)
|
||||
(input := skeleton)
|
||||
(fileName := ← getFileName) with
|
||||
| .ok syn => pure syn
|
||||
| .error error => throwError "Failed to parse: {error}"
|
||||
-- Apply the tactic
|
||||
let target ← Meta.mkFreshExprSyntheticOpaqueMVar body
|
||||
let tactic := Tactic.evalDraft skeleton'
|
||||
let newGoals ← runTacticOnMVar tactic target.mvarId!
|
||||
addTest $ LSpec.check "goals" ((← newGoals.mapM (λ g => do exprToStr (← g.getType))) = ["p ∨ p", "(p ∨ p) ∨ p"])
|
||||
|
||||
def suite (env: Environment): List (String × IO LSpec.TestSeq) :=
|
||||
[
|
||||
("draft", test_draft),
|
||||
] |>.map (λ (name, t) => (name, runTestTermElabM env t))
|
||||
|
||||
end Pantograph.Test.Tactic.Assign
|
Loading…
Reference in New Issue