From 43141dbe58dfa806d025f11b924d35c25ed62e22 Mon Sep 17 00:00:00 2001 From: Mariano Saura Date: Mon, 12 Aug 2024 16:15:32 -0300 Subject: [PATCH] Fix #109 --- .../RepositoryBasedTest.class.st | 25 +++++++++++++++++++ source/Sagan-Core/InMemoryRepository.class.st | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/source/Sagan-Core-Tests/RepositoryBasedTest.class.st b/source/Sagan-Core-Tests/RepositoryBasedTest.class.st index d20e6c8..189d01a 100644 --- a/source/Sagan-Core-Tests/RepositoryBasedTest.class.st +++ b/source/Sagan-Core-Tests/RepositoryBasedTest.class.st @@ -257,6 +257,31 @@ RepositoryBasedTest >> testFindAllMatchingLimitedToSortedByAscending [ ] +{ #category : 'tests - querying' } +RepositoryBasedTest >> testFindAllMatchingLimitedToSortedByAscendingLimitGreaterThanNumberOfMatchingElements [ + + | results | + self extraterrestrials + store: self silvesterStallone; + store: self silvesterMcCoy; + store: self johnTravolta; + store: self johnLock. + + results := self extraterrestrials + findAllMatching: [ :extraterrestrial :criteria | + criteria does: extraterrestrial lastName asUppercase includeSubstring: 'L' ] + limitedTo: 4 + sortedByAscending: #lastName. + + self + assert: results size equals: 3; + assert: ( results anySatisfy: [ :result | result lastName = 'Lock' ] ); + deny: ( results anySatisfy: [ :result | result lastName = 'McCoy' ] ); + assert: ( results anySatisfy: [ :result | result lastName = 'Stallone' ] ); + assert: ( results anySatisfy: [ :result | result lastName = 'Travolta' ] ) + +] + { #category : 'tests - querying' } RepositoryBasedTest >> testFindAllMatchingSortedBy [ diff --git a/source/Sagan-Core/InMemoryRepository.class.st b/source/Sagan-Core/InMemoryRepository.class.st index cfc8b91..0d3ea4c 100644 --- a/source/Sagan-Core/InMemoryRepository.class.st +++ b/source/Sagan-Core/InMemoryRepository.class.st @@ -73,7 +73,7 @@ InMemoryRepository >> findAllMatching: aCriteriaOrBlock [ InMemoryRepository >> findAllMatching: aCriteriaOrBlock limitedTo: aMaxNumberOfResults sortedByAscending: aVariableName [ ^ ( ( self contentsSortedByAscending: aVariableName ) select: - ( self asMatchingCriteria: aCriteriaOrBlock ) ) copyFirst: aMaxNumberOfResults + ( self asMatchingCriteria: aCriteriaOrBlock ) ) copyNoMoreThanFirst: aMaxNumberOfResults ] { #category : 'querying' }