11module Test.Kore.Builtin
22 ( test_internalize
3+ , test_sortModuleClaims
34 ) where
45
56import Prelude.Kore hiding
@@ -9,14 +10,36 @@ import Prelude.Kore hiding
910import Test.Tasty
1011import Test.Tasty.HUnit
1112
13+ import Control.Lens
14+ ( ix
15+ , (%~)
16+ , (.~)
17+ )
18+ import qualified Control.Lens as Lens
19+ import Data.Generics.Product
20+ ( field
21+ )
1222import qualified Data.Set
1323
24+ import Kore.ASTVerifier.DefinitionVerifier
25+ ( sortModuleClaims
26+ )
27+ import Kore.Attribute.Axiom
28+ ( SourceLocation
29+ )
1430import qualified Kore.Attribute.Symbol as Attribute
1531import qualified Kore.Builtin as Kore
32+ import Kore.IndexedModule.IndexedModule
33+ ( IndexedModule (.. )
34+ , VerifiedModule
35+ )
1636import Kore.IndexedModule.MetadataTools
1737 ( SmtMetadataTools
1838 )
1939import Kore.Internal.TermLike
40+ import Test.Kore.Step.SMT.Builders
41+ ( indexModule
42+ )
2043
2144import qualified Test.Kore.Builtin.Builtin as Builtin
2245import qualified Test.Kore.Builtin.Definition as Builtin
@@ -151,3 +174,25 @@ notInternalizes name origin =
151174
152175metadata :: SmtMetadataTools Attribute. Symbol
153176metadata = Builtin. testMetadataTools
177+
178+ test_sortModuleClaims :: TestTree
179+ test_sortModuleClaims =
180+ testCase " sort claims" $ do
181+ let verifiedModule =
182+ indexModule Builtin. testModuleWithTwoClaims
183+ & ixSetLocation 0 (from $ FileLocation " file" 5 3 )
184+ & ixSetLocation 1 (from $ FileLocation " file" 1 1 )
185+ withSortedClaims = sortModuleClaims verifiedModule
186+ assertEqual " "
187+ (indexedModuleClaims withSortedClaims)
188+ (indexedModuleClaims verifiedModule & reverse )
189+ where
190+ ixSetLocation
191+ :: Int
192+ -> SourceLocation
193+ -> VerifiedModule declAtts
194+ -> VerifiedModule declAtts
195+ ixSetLocation index sourceLocation verifiedModule =
196+ verifiedModule
197+ & field @ " indexedModuleClaims"
198+ %~ (ix index . Lens. _1 . field @ " sourceLocation" .~ sourceLocation)
0 commit comments