feat: add [Expressive(Projectable = true)] for projection middleware compatibility #31
GitHub Actions / Test Results
succeeded
Apr 13, 2026 in 0s
768 passed, 0 failed and 0 skipped
| Report | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ./test-results/ExpressiveSharp.EntityFrameworkCore.IntegrationTests.trx | 178✅ | 6s | ||
| ./test-results/ExpressiveSharp.Generator.Tests.trx | 372✅ | 18s | ||
| ./test-results/ExpressiveSharp.IntegrationTests.trx | 71✅ | 941ms | ||
| ./test-results/ExpressiveSharp.Tests.trx | 147✅ | 568ms |
✅ ./test-results/ExpressiveSharp.EntityFrameworkCore.IntegrationTests.trx
178 tests were completed in 6s with 178 passed, 0 failed and 0 skipped.
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.AsyncQueryableTests
✅ AllAsync_WithPredicate_Executes
✅ AnyAsync_WithPredicate_Executes
✅ AsNoTracking_Where_ToListAsync_ExecutesCorrectly
✅ AverageAsync_WithSelector_Executes
✅ ContainsAsync_WithValue_Executes
✅ CountAsync_WithPredicate_Executes
✅ ElementAtAsync_Executes
✅ ElementAtOrDefaultAsync_OutOfRange_ReturnsNull
✅ FirstAsync_WithPredicate_Executes
✅ FirstOrDefaultAsync_WithPredicate_ReturnsNullWhenNoMatch
✅ GroupBy_WithElementSelector_Executes
✅ GroupJoin_Executes
✅ Include_Where_ToListAsync_LoadsNavigation
✅ Join_Executes
✅ LongCountAsync_WithPredicate_Executes
✅ MaxAsync_WithSelector_Executes
✅ MinAsync_WithSelector_Executes
✅ NullConditional_InFirstOrDefaultAsync_Predicate_ExecutesCorrectly
✅ NullConditional_InWhere_ToListAsync_ExecutesCorrectly
✅ SelectMany_WithCollection_Executes
✅ SelectMany_WithResultSelector_Executes
✅ SingleAsync_WithPredicate_Executes
✅ SingleOrDefaultAsync_WithPredicate_ReturnsNullWhenNoMatch
✅ SumAsync_WithSelector_Executes
✅ TagWith_Where_FirstAsync_ExecutesCorrectly
✅ Take_Skip_Where_ToListAsync_ExecutesCorrectly
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.CapturedVariableTests
✅ OrderBy_CapturedVariable_InKeySelector
✅ Polyfill_CapturedVariable_ProducesCorrectExpression
✅ Select_CapturedVariable_InProjection
✅ Where_CapturedEnum_TranslatesToSql
✅ Where_CapturedInstanceField_TranslatesToSql
✅ Where_CapturedInstanceField_WithMultipleFields
✅ Where_CapturedInstanceProperty_TranslatesToSql
✅ Where_CapturedLocal_TranslatesToSql
✅ Where_CapturedLoopVariable_TranslatesToSql
✅ Where_CapturedNullableString_TranslatesToSql
✅ Where_CapturedParameter_TranslatesToSql
✅ Where_CapturedVariable_ChainedWithSelect_TranslatesToSql
✅ Where_CapturedVariable_WithNullConditional_InSelect
✅ Where_MultipleCapturedVariables_TranslatesToSql
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.CommonScenarioTests
✅ GroupBy_GetGrade_CountsCorrectly
✅ GroupBy_StatusDescription_CountsCorrectly
✅ OrderBy_GetGrade_ReturnsSorted
✅ OrderBy_TagLength_NullsAppearFirst
✅ OrderByDescending_GetGrade_ReturnsSortedDescending
✅ OrderByDescending_Total_ReturnsSortedDescending
✅ Polyfill_Arithmetic_ProjectsCorrectly
✅ Polyfill_NullCoalescing_ProjectsCorrectly
✅ Polyfill_NullConditional_ProjectsCorrectly
✅ Polyfill_SimpleCondition_FiltersCorrectly
✅ Select_AllItemsAffordable_ReturnsCorrectFlags
✅ Select_CheckedTotal_ReturnsCorrectValues
✅ Select_ClampedPrice_ReturnsCorrectValues
✅ Select_ConditionalWithComparison_ReturnsCorrectValues
✅ Select_CustomerCity_ViaCustomerExpressive
✅ Select_CustomerCountry_TwoLevelChain
✅ Select_CustomerName_ReturnsCorrectNullableValues
✅ Select_DiscountedPrice_ReturnsCorrectValues
✅ Select_FormattedPrice_UsesToStringWithFormat
✅ Select_GetCategory_ReturnsCorrectValues
✅ Select_GetGrade_ReturnsCorrectValues
✅ Select_HasExpensiveItems_ReturnsCorrectFlags
✅ Select_InlineTuple_ProjectsCorrectly
✅ Select_InstanceMethod_ViaExpressiveFor_ReturnsCorrectValues
✅ Select_InstanceProperty_ViaExpressiveFor_ReturnsConstant
✅ Select_IsPriceQuantityDifferent_ReturnsCorrectValues
✅ Select_IsPriceQuantityMatch_ReturnsCorrectValues
✅ Select_ItemCount_ReturnsCorrectCounts
✅ Select_ItemTotal_ReturnsCorrectTotals
✅ Select_ItemTotalForExpensive_ReturnsCorrectTotals
✅ Select_NestedTernary_ReturnsCorrectValues
✅ Select_OrderDto_ProjectsCorrectly
✅ Select_PriceBreakpoints_ReturnsArrayLiteral
✅ Select_StatusDescription_ReturnsCorrectValues
✅ Select_Summary_ReturnsCorrectValues
✅ Select_SummaryConcat_ReturnsCorrectValues
✅ Select_TagLength_ReturnsCorrectNullableValues
✅ Select_Total_ReturnsCorrectValues
✅ Select_TupleWithExpressiveMember_ProjectsCorrectly
✅ Select_TupleWithNullable_ProjectsCorrectly
✅ Where_CheckedTotalGreaterThan100_FiltersCorrectly
✅ Where_ClampedPriceEquals100_FiltersCorrectly
✅ Where_CompoundCondition_FiltersCorrectly
✅ Where_CustomerCountryEquals_FiltersCorrectly
✅ Where_CustomerNameEquals_FiltersCorrectly
✅ Where_CustomerNameIsNull_FiltersCorrectly
✅ Where_DetailedSummary_ConcatArrayTranslatesToSql
✅ Where_IsPattern_NullCheck
✅ Where_IsPriceQuantityMatch_FiltersCorrectly
✅ Where_NoMatch_ReturnsEmpty
✅ Where_Summary_TranslatesToSql
✅ Where_TotalGreaterThan100_FiltersCorrectly
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.ExpressiveDbSetDiscoveryTests
✅ ExpressiveOnlyContext_EntityIsDiscoveredInModel
✅ ExpressiveOnlyContext_QueryExecutesAgainstDiscoveredTable
✅ ExpressiveOnlyContext_TableNameMatchesPropertyName
✅ ExpressiveOnlyContext_UseExpressivesBeforeProvider_EntityStillDiscovered
✅ MixedContext_DbSetTableNameWinsOverExpressiveDbSet
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.ExpressiveExpansionTests
✅ CapturedVariable_WithExpressive_InSameQuery
✅ CapturedVariable_WithExpressiveSelect_InChain
✅ ExpressiveConstructor_OrderDto_ProjectsCorrectly
✅ ExpressiveExtensionMethod_InWhere
✅ ExpressiveExtensionMethod_StatusDescription
✅ ExpressiveInWhere_FilterByBlockBodyMethod
✅ ExpressiveInWhere_FilterByGetGrade
✅ ExpressiveInWhere_FilterByTotal
✅ ExpressiveStringInterpolation_Summary
✅ MultipleExpressives_InSingleSelect
✅ NestedExpressive_GetOrderSummaryTuple_ExpandsBothGetGradeAndTotal
✅ NestedExpressive_TotalUsedInGetGrade_ExpandsRecursively
✅ NullConditionalExpressive_CustomerName_InFilter
✅ NullConditionalExpressive_CustomerName_NullResult
✅ NullConditionalExpressive_MultiLevelChain_CustomerCountry
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.IncludeTests
✅ AsNoTracking_Include_Executes
✅ ChainedModifiers_Include_Execute
✅ IgnoreQueryFilters_Executes
✅ Include_LoadsRelatedCustomer
✅ Include_ThenInclude_LoadsTwoLevelNavigation
✅ Include_ThenWhere_OnNavigationProperty_ExecutesCorrectly
✅ StringInclude_LoadsNavigation
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.ProjectableExpressiveSqlTests
✅ ProjectableProperty_IsAutoIgnored_NoColumnInModel
✅ ProjectableProperty_MemberInitProjection_MaterializesStoredValue
✅ ProjectableProperty_SelectInlinesFormulaIntoSql
✅ ProjectableProperty_WhereClauseFiltersOnFormula
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.QueryFilterTests
✅ BlockBodyFilter_CountAsync_RespectsFilter
✅ BlockBodyFilter_FiltersOutNullEmails
✅ BlockBodyFilter_IgnoreQueryFilters_ReturnsAll
✅ ExpressionBodyFilter_CountAsync_RespectsFilter
✅ ExpressionBodyFilter_FiltersOutZeroTotals
✅ ExpressionBodyFilter_IgnoreQueryFilters_ReturnsAll
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.StoreQueryTests
✅ CapturedVariable_PlusExpressive_Total_FiltersCorrectly
✅ ExpressiveFor_Inside_ExpressiveMember_ComposesCorrectly
✅ FilterByCustomerName_ProjectTotal
✅ FilterByStatus_SelectCategory
✅ GroupByStatus_CountOrders
✅ NullConditional_WithExpressiveFor_ComposedInProjection
✅ OrderByGrade_SelectTotal
✅ OrderByGrade_ThenByTotal_CompoundSort
✅ ProjectToOrderDto_ForAllOrders
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.TransformerBehaviorTests
✅ ConvertLoopsToLinq_EnablesForeachInExpressive
✅ FlattenBlockExpressions_InlinesLocalVariable
✅ FlattenTupleComparisons_RewritesTupleEquality
✅ RemoveNullConditionalPatterns_StripsQuestionDot
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.UseExpressivesConventionTests
✅ BlockBody_InExpressiveMember_TranslatesCorrectly
✅ ExpressiveDbSet_EntityIsDiscoveredInModel
✅ ExpressiveProperties_AreMarkedUnmapped
✅ NullConditional_InExpressiveMember_TranslatesCorrectly
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Sqlite.WindowFunctionTests
✅ Average_IntColumn_ReturnsDouble
✅ Average_WithSlidingWindow_ProducesMovingAverage
✅ Count_Expression_CountsNonNullOnly
✅ Count_Star_WithPartition_ProducesRunningCount
✅ CumeDist_ReturnsBetweenZeroAndOne
✅ DenseRank_WithTies_ReturnsNoGaps
✅ FirstValue_ReturnsFirstPriceInPartition
✅ FirstValue_WithPartition_ReturnsFirstPerGroup
✅ IndexedSelect_ReturnsZeroBasedIndices
✅ Lag_Default_ReturnsPreviousRowPrice
✅ Lag_WithDefault_ReturnsDefaultWhenNoRow
✅ Lag_WithOffset_ReturnsCorrectRow
✅ Lag_WithPartition_ResetsPerGroup
✅ LastValue_WithUnboundedFrame_ReturnsLastPriceInPartition
✅ Lead_Default_ReturnsNextRowPrice
✅ Lead_WithOffsetAndDefault_ReturnsCorrectValues
✅ Lead_WithPartition_ResetsPerGroup
✅ Max_WithRowsFrame_ReturnsRunningMax
✅ Min_WithPartition_ReturnsRunningMin
✅ MultipleAggregates_InSameSelect
✅ MultipleWindowFunctions_InSameSelect
✅ NthValue_ReturnsValueAtPosition
✅ Ntile_DistributesIntoBuckets
✅ PercentRank_ReturnsBetweenZeroAndOne
✅ Rank_WithTies_ReturnsGaps
✅ RowNumber_OverExpressiveTotal_UsesExpandedExpression
✅ RowNumber_ReturnsCorrectSequentialNumbers
✅ RowNumber_WithPartitionBy_ResetsPerGroup
✅ Sum_WithoutFrame_UsesDefaultFrame
✅ Sum_WithPartitionAndFrame_ResetsPerGroup
✅ Sum_WithRangeFrame_ProducesRangeBasedTotal
✅ Sum_WithRowsFrame_ProducesRunningTotal
✅ ./test-results/ExpressiveSharp.Generator.Tests.trx
372 tests were completed in 18s with 372 passed, 0 failed and 0 skipped.
✅ ExpressiveSharp.Generator.Tests.CodeFixers.AddExpressiveCodeFixProviderTests
✅ AddsExpressiveAttribute_ToMethodDeclaration
✅ AddsExpressiveAttribute_ToPropertyDeclaration
✅ AddsUsingDirective_WhenMissing
✅ DoesNotAddDuplicateUsing_WhenAlreadyPresent
✅ ExpressiveSharp.Generator.Tests.CodeFixers.MigrationAnalyzerTests
✅ CodeFix_ReplacesExtensionsNamespace
✅ CodeFix_ReplacesProjectablesNamespace
✅ CodeFix_ReplacesProjectableWithExpressive
✅ CodeFix_ReplacesUseProjectablesWithUseExpressives
✅ DetectsProjectableAttribute
✅ DetectsProjectablesExtensionsUsingDirective
✅ DetectsProjectablesUsingDirective
✅ DetectsUseProjectablesCall
✅ ExpressiveSharp.Generator.Tests.CodeFixers.MissingExpressiveImportAnalyzerTests
✅ Contains_OnPlainQueryable_NoDiagnostic
✅ Contains_WithoutStub_ReportsEXP0022
✅ Take_WithoutUsing_ReportsEXP0021
✅ Where_OnPlainQueryable_NoDiagnostic
✅ Where_WithoutUsing_ReportsEXP0021
✅ Where_WithUsing_NoDiagnostic
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.BlockBodyTests
✅ BlockBodiedMethod_SimpleReturn
✅ BlockBodiedMethod_WithAllowFlag_NoWarning
✅ BlockBodiedMethod_WithIfElse
✅ BlockBodiedMethod_WithLocalVariable
✅ BlockBodiedMethod_WithNestedIfElse
✅ BlockBodiedMethod_WithoutExplicitFlag_StillWorks
✅ BlockBodiedMethod_WithPropertyAccess
✅ BlockBodiedMethod_WithTransitiveLocalVariables
✅ BlockBody_WithAwait_ReportsError
✅ BlockBody_WithoutAllowFlag_ReportsError
✅ BlockBody_WithThrow
✅ BlockBody_WithTryCatch_ReportsWarning
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.CheckedArithmeticTests
✅ CheckedAddition
✅ CheckedConversion
✅ CheckedMultiplication
✅ CheckedNegation
✅ CheckedSubtraction
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.CollectionExpressionTests
✅ CollectionExpression_Array
✅ CollectionExpression_ArrayWithSpread
✅ CollectionExpression_ListWithSpread
✅ CollectionExpression_MultipleSpreads
✅ CollectionExpression_SpreadOnly
✅ CollectionInitializer_DictionaryAdd
✅ CollectionInitializer_ListOfInt
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.ConstructorTests
✅ ProjectableConstructor_BodyAssignments
✅ ProjectableConstructor_Overloads
✅ ProjectableConstructor_ReferencingBasePropertyInDerivedBody
✅ ProjectableConstructor_ReferencingPreviouslyAssignedInBaseCtor
✅ ProjectableConstructor_ReferencingPreviouslyAssignedProperty
✅ ProjectableConstructor_ReferencingStaticConstMember
✅ ProjectableConstructor_ThisInitializer_ChainedThisAndBase
✅ ProjectableConstructor_ThisInitializer_RefPreviouslyAssignedProperty
✅ ProjectableConstructor_ThisInitializer_SimpleOverload
✅ ProjectableConstructor_ThisInitializer_WithBodyAfter
✅ ProjectableConstructor_ThisInitializer_WithIfElseInDelegated
✅ ProjectableConstructor_WithBaseInitializer
✅ ProjectableConstructor_WithBaseInitializer_AndEarlyReturn
✅ ProjectableConstructor_WithBaseInitializer_AndIfElse_InDerivedBody
✅ ProjectableConstructor_WithBaseInitializerAndIfElse
✅ ProjectableConstructor_WithBaseInitializerExpression
✅ ProjectableConstructor_WithClassArgument
✅ ProjectableConstructor_WithDeepNestedIf
✅ ProjectableConstructor_WithEarlyReturn_GuardClause
✅ ProjectableConstructor_WithElseIfChain
✅ ProjectableConstructor_WithExplicitParameterlessConstructor_Succeeds
✅ ProjectableConstructor_WithFullObject
✅ ProjectableConstructor_WithIfElseLogic
✅ ProjectableConstructor_WithIfInsideLocalScope_AndElse
✅ ProjectableConstructor_WithIfNoElse
✅ ProjectableConstructor_WithLocalVariable
✅ ProjectableConstructor_WithLocalVariableUsedInCondition
✅ ProjectableConstructor_WithMultipleClassArguments
✅ ProjectableConstructor_WithMultipleEarlyReturns
✅ ProjectableConstructor_WithMultipleLocalVariables
✅ ProjectableConstructor_WithNestedIfElse
✅ ProjectableConstructor_WithNullableParameter
✅ ProjectableConstructor_WithNullCoalescing
✅ ProjectableConstructor_WithoutParameterlessConstructor_EmitsDiagnostic
✅ ProjectableConstructor_WithSequentialIfs
✅ ProjectableConstructor_WithSwitchExpression
✅ ProjectableConstructor_WithSwitchExpression_AndExtraProperty
✅ ProjectableConstructor_WithTernaryAssignment
✅ ProjectableConstructor_WithThisInitializer_AndElseIfInBody
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.DiagnosticTests
✅ AbstractMethod_NoBody_ReportsEXP0001
✅ AutoProperty_NoBody_ReportsEXP0001
✅ DelegatedConstructor_BaseInBCL_ReportsEXP0003
✅ ExpressiveFor_NonExistentTargetType_ReportsEXP0014
✅ FactoryMethod_ReturningNewContainingType_ReportsEXP0012
✅ NestedObjectInitializer_ReportsEXP0007
✅ PositionalPattern_NoMatchingProperty_ReportsEXP0011
✅ StringInterpolation_AlignmentSpecifier_ReportsEXP0018
✅ UnsignedRightShift_ReportsEXP0009
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.EnumTests
✅ ExpandEnumMethodsReturningBoolean
✅ ExpandEnumMethodsReturningInteger
✅ ExpandEnumMethodsWithDescriptionAttribute
✅ ExpandEnumMethodsWithDisplayAttribute
✅ ExpandEnumMethodsWithNullableEnum
✅ ExpandEnumMethodsWithParameter
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.ExpressiveForTests
✅ ConflictWithExpressive_EXP0019
✅ DuplicateMapping_EXP0020
✅ InstanceMethod
✅ InstanceProperty
✅ MemberNotFound_EXP0015
✅ MixedRegistry
✅ OverloadDisambiguation
✅ ReturnTypeMismatch_EXP0017
✅ StaticMethod
✅ StaticProperty
✅ StubNotStatic_EXP0016
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.ExtensionMethodTests
✅ ExpressiveExtensionMethod
✅ ExpressiveExtensionMethod_CallingAnotherExpressive
✅ ExpressiveExtensionMethod_OnValueType
✅ ExpressiveExtensionMethod_SelfRecursive
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.GenericTests
✅ GenericClassesWithConstraints_AreRewritten
✅ GenericClassesWithTypeConstraints_AreRewritten
✅ GenericMethods_AreRewritten
✅ GenericTypes
✅ GenericTypesWithConstraints
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.GlobalOptionsTests
✅ AttributeDisableEnumMethodExpansion_OverridesDefault
✅ AttributeDisableNullConditional_StillGeneratesFaithfully
✅ BlockBody_AlwaysAllowed_NoDiagnostics
✅ EnumMethodExpansion_EnabledByDefault_ExpandsWithoutAttributeFlag
✅ GlobalNullConditionalMode_Rewrite_AllowsNullConditionals
✅ MalformedGlobalOption_IsTreatedAsNotSet
✅ NoGlobalOptions_HardCodedDefaultsApply_BlockBodyWorks
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.IndexRangeTests
✅ IndexFromEnd_WorksAsExpression
✅ Range_WorksAsExpression
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.InterfaceTests
✅ DefaultInterfaceMember
✅ ExplicitInterfaceImplementation
✅ ExplicitInterfaceMember
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.ListPatternTests
✅ ListPattern_FixedLength
✅ ListPattern_WithSlice
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.LoopTests
✅ ForEach_Aggregate
✅ ForEach_All
✅ ForEach_Any
✅ ForEach_ConditionalAggregate
✅ ForEach_ConditionalMinWithMemberAccess
✅ ForEach_ConditionalSelectWithMethodCall
✅ ForEach_ConditionalSum
✅ ForEach_CountAll
✅ ForEach_CountWithPredicate
✅ ForEach_EnabledByDefault_NoDiagnostics
✅ ForEach_InstanceMethodInBody
✅ ForEach_Min
✅ ForEach_SelectWithMethodCall
✅ ForEach_Sum
✅ ForEach_SumWithChainedMemberAccess
✅ ForEach_SumWithMethodCall
✅ ForEach_SumWithSelector
✅ ForEach_WithLoopDisableFlag_StillEmitsLoop
✅ ForLoop_ArraySum
✅ WhileLoop_EmitsBlockExpression
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.MethodTests
✅ BaseMemberExplicitReference
✅ BaseMemberImplicitReference
✅ BaseMethodExplicitReference
✅ Cast
✅ ConstMember
✅ DeclarationTypeNamesAreGettingFullyQualified
✅ DefaultValuesGetRemoved
✅ ExpressiveComputedMethodWithMultipleArguments
✅ ExpressiveComputedMethodWithSingleArgument
✅ InheritedMembers
✅ IsOperator
✅ MethodOverloads_WithDifferentParameterCounts
✅ MethodOverloads_WithDifferentParameterTypes
✅ ParamsModifierGetsRemoved
✅ RequiredNamespace
✅ SimpleExpressiveMethod
✅ StaticMembers
✅ StaticMembers2
✅ StaticMethodWithNoParameters
✅ StaticMethodWithParameters
✅ StringInterpolation_Empty
✅ StringInterpolation_FormatSpecifier
✅ StringInterpolation_LiteralOnly
✅ StringInterpolation_MultiplePartsWithNullCoalescing
✅ StringInterpolation_MultipleSegments
✅ StringInterpolation_SimpleIntProperty
✅ StringInterpolationWithStaticCall_IsBeingRewritten
✅ TypesInBodyGetsFullyQualified
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.MissingExpressiveDiagnosticTests
✅ EXP0013_HasAdditionalLocation_PointingToDeclaration
✅ ExpressiveQueryable_MethodGroup_WithNonExpressiveMethod_WarnsEXP0013
✅ ExpressiveQueryable_Select_WithNonExpressiveExtensionMethod_WarnsEXP0013
✅ ExpressiveQueryable_Select_WithNonExpressiveProperty_WarnsEXP0013
✅ ExpressiveQueryable_Where_WithNonExpressiveInstanceMethod_WarnsEXP0013
✅ ExpressiveQueryable_WithAutoProperty_NoWarning
✅ ExpressiveQueryable_WithBclMethod_NoWarning
✅ ExpressiveQueryable_WithEnumExtensionMethod_NoWarning
✅ ExpressiveQueryable_WithExpressiveMethod_NoWarning
✅ ExtensionMethod_OnEnumReceiver_NoWarning
✅ ExtensionMethod_OnNonEnumReceiver_WarnsEXP0013
✅ MethodCall_ToBclMethod_NoWarning
✅ MethodCall_ToBlockBodyMethod_WarnsEXP0013
✅ MethodCall_ToMethodWithExpressive_NoWarning
✅ MethodCall_ToSourceMethodWithExpressionBody_WarnsEXP0013
✅ PropertyAccess_ToAutoProperty_NoWarning
✅ PropertyAccess_ToExpressiveProperty_NoWarning
✅ PropertyAccess_ToSourcePropertyWithBlockGetter_WarnsEXP0013
✅ PropertyAccess_ToSourcePropertyWithExpressionBody_WarnsEXP0013
✅ PropertyWithoutExpressive_ReferencedInExpressive_WarnsEXP0013
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.NullableTests
✅ BooleanSimpleTernary_WithRewriteSupport_IsBeingRewritten
✅ GenericNullableReferenceTypesAreBeingEliminated
✅ MultiLevelNullableMemberBinding_DefaultMode_UsesRewrite
✅ NullableElementAndMemberBinding_WithIgnoreSupport_IsBeingRewritten
✅ NullableElementAndMemberBinding_WithRewriteSupport_IsBeingRewritten
✅ NullableElementBinding_WithIgnoreSupport_IsBeingRewritten
✅ NullableElementBinding_WithRewriteSupport_IsBeingRewritten
✅ NullableMemberBinding_DefaultMode_UsesRewrite
✅ NullableMemberBinding_WithDisableFlag_StillGenerates
✅ NullableMemberBinding_WithIgnoreSupport_IsBeingRewritten
✅ NullableMemberBinding_WithRewriteSupport_IsBeingRewritten
✅ NullableParameters_WithRewriteSupport_IsBeingRewritten
✅ NullableReferenceTypeCastOperatorGetsEliminated
✅ NullableReferenceTypesAreBeingEliminated
✅ NullableSimpleElementBinding_WithIgnoreSupport_IsBeingRewritten
✅ NullableSimpleElementBinding_WithRewriteSupport_IsBeingRewritten
✅ NullableValueCastOperatorsPersist
✅ NullableValueType_MemberAccess_WithIgnoreSupport_IsBeingRewritten
✅ NullableValueType_MemberAccess_WithRewriteSupport_IsBeingRewritten
✅ NullableValueType_MemberAccessWithCoalesce_WithRewriteSupport_IsBeingRewritten
✅ NullConditionalNullCoalesceTypeConversion
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.PositionalPatternTests
✅ IsExpression_PositionalPatternWithRelationalSubPatterns
✅ IsExpression_RecordPositionalPattern
✅ IsExpression_RecordStructPositionalPattern
✅ SwitchExpression_RecordPositionalPattern
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.ProjectableTests
✅ InterfaceProperty_EXP0028
✅ ManualBackingFieldWrongType_EXP0025
✅ MissingWritableAccessor_EXP0021
✅ NonCoalesceGetBody_EXP0022
✅ NullablePropertyType_EXP0024
✅ OverrideProperty_EXP0029
✅ ProjectableRegistryKeyIsPropertyGetter
✅ ProjectableWithSetAccessor
✅ RequiredModifier_EXP0026
✅ SetterDoesNotStoreValue_EXP0023
✅ SimpleProjectableProperty_FieldKeyword
✅ SimpleProjectableProperty_ManualBackingField
✅ StaticBackingField_EXP0022
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.PropertyTests
✅ EmptyCode_Noop
✅ ExpressiveComputedPropertyMethod
✅ ExpressiveComputedPropertyUsingThis
✅ ExpressiveComputedPropertyWithExplicitBlockGetter
✅ ExpressiveComputedPropertyWithExplicitExpressionGetter
✅ ExpressivePropertyToNavigationalProperty
✅ ExpressivePropertyWithExplicitBlockGetter
✅ ExpressivePropertyWithExplicitBlockGetter_AlwaysAllowed
✅ ExpressivePropertyWithExplicitBlockGetterAndMethodCall
✅ ExpressivePropertyWithExplicitBlockGetterUsingThis
✅ ExpressivePropertyWithExplicitExpressionGetter
✅ FooOrBar
✅ MinimalExpressiveComputedProperty
✅ MoreComplexExpressiveComputedProperty
✅ NavigationProperties
✅ PropertyWithCustomTransformers
✅ RelationalProperty
✅ SimpleExpressiveComputedInNestedClassProperty
✅ SimpleExpressiveComputedProperty
✅ SimpleExpressiveComputedPropertyWithSetter
✅ SimpleExpressiveProperty
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.RegistryTests
✅ GenericClass_GetsEditorBrowsableAttribute
✅ GenericClass_NotIncludedInRegistry
✅ MethodOverloads_BothRegistered
✅ MultipleExpressives_AllRegistered
✅ NoExpressives_NoRegistry
✅ SingleMethod_RegistryContainsEntry
✅ SingleProperty_RegistryContainsEntry
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.StringConcatenationTests
✅ IntPlusString
✅ SingleStringConcat
✅ StringPlusString
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.SwitchPatternTests
✅ ExpressionBodied_IsPattern_WithAndPattern
✅ ExpressionBodied_IsPattern_WithNotNullPattern
✅ ExpressionBodied_IsPattern_WithOrPattern
✅ SwitchExpression_WithRelationalPattern
✅ SwitchExpression_WithRelationalPattern_OnExtensionMethod
✅ SwitchExpressionWithConstantPattern
✅ SwitchExpressionWithTypePattern
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.ThrowExpressionTests
✅ ThrowInConditional
✅ ThrowInNullCoalescing
✅ ThrowInSwitchArm
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.TupleTests
✅ NestedTupleLiteral
✅ TupleBinary_Equality
✅ TupleBinary_Inequality
✅ TupleLiteralInMethod
✅ TupleLiteralWith8Elements
✅ TupleLiteralWithNamedElements
✅ TupleLiteralWithParameters
✅ ExpressiveSharp.Generator.Tests.ExpressiveGenerator.WithExpressionTests
✅ WithExpression_OnRecord
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.AnonymousElementTests
✅ Count_AfterAnonymousSelect_GeneratesScalarInterceptor
✅ DistinctBy_AfterAnonymousSelect_GeneratesInterceptor
✅ GroupBy_AfterAnonymousSelect_GeneratesInterceptor
✅ OrderByDescending_AfterAnonymousSelect_GeneratesInterceptor
✅ Select_AfterAnonymousSelect_GeneratesInterceptor
✅ Where_AfterAnonymousSelect_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.ComparerOverloadTests
✅ DistinctBy_WithComparer_GeneratesInterceptor
✅ GroupBy_WithComparer_GeneratesInterceptor
✅ OrderBy_WithComparer_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.ExecuteUpdateTests
✅ ExecuteUpdate_SetProperty_ConstantValue
✅ ExecuteUpdate_SetProperty_WithNullConditional
✅ ExecuteUpdate_SetProperty_WithSwitchExpression
✅ ExecuteUpdateAsync_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.GlobalOptionsTests
✅ Polyfill_GlobalNullConditionalIgnore_UsesIgnoreMode
✅ Where_GlobalNullConditionalRewrite_AppliesWithoutPerCallOverride
✅ Where_PerCallOverridesGlobal
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.GroupByTests
✅ GroupBy_GeneratesGroupingReturnType
✅ GroupBy_WithElementAndResultSelector_GeneratesInterceptor
✅ GroupBy_WithElementSelector_GeneratesInterceptor
✅ GroupBy_WithResultSelector_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.JoinTests
✅ GroupJoin_AnonymousResultSelector_GeneratesGenericInterceptor
✅ GroupJoin_GeneratesInterceptor
✅ Join_AnonymousResultSelector_GeneratesGenericInterceptor
✅ Join_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.NullConditionalTests
✅ CustomReceiverType_NotIntercepted
✅ NullConditionalRewrite_ExpandsInWhereBody
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.OrderByTests
✅ OrderBy_GeneratesInterceptor
✅ ThenBy_CastsToIOrderedQueryable
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.PolyfillTargetTests
✅ PolyfillTarget_RoutesToSpecifiedType
✅ PolyfillTarget_WithoutAttribute_DefaultsToQueryable
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.PolyfillTests
✅ Polyfill_CapturedVariable_GeneratesClosureAccess
✅ Polyfill_InferredTypeArgument_GeneratesExpression
✅ Polyfill_NullConditional_RewritesOperator
✅ Polyfill_SimpleLambda_GeneratesExpression
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.ScalarMethodTests
✅ All_GeneratesScalarInterceptor
✅ Any_GeneratesScalarInterceptor
✅ Average_DecimalSelector_GeneratesScalarInterceptor
✅ Average_DoubleSelector_GeneratesScalarInterceptor
✅ Average_FloatSelector_GeneratesScalarInterceptor
✅ Average_IntSelector_GeneratesScalarInterceptor
✅ Average_LongSelector_GeneratesScalarInterceptor
✅ Average_NullableDecimalSelector_GeneratesScalarInterceptor
✅ Average_NullableDoubleSelector_GeneratesScalarInterceptor
✅ Average_NullableFloatSelector_GeneratesScalarInterceptor
✅ Average_NullableIntSelector_GeneratesScalarInterceptor
✅ Average_NullableLongSelector_GeneratesScalarInterceptor
✅ Count_GeneratesScalarInterceptor
✅ First_GeneratesScalarInterceptor
✅ FirstOrDefault_GeneratesScalarInterceptor
✅ Last_GeneratesScalarInterceptor
✅ LastOrDefault_GeneratesScalarInterceptor
✅ LongCount_GeneratesScalarInterceptor
✅ Max_GenericSelector_GeneratesScalarInterceptor
✅ MaxBy_GeneratesScalarInterceptor
✅ Min_GenericSelector_GeneratesScalarInterceptor
✅ MinBy_GeneratesScalarInterceptor
✅ Single_GeneratesScalarInterceptor
✅ SingleOrDefault_GeneratesScalarInterceptor
✅ Sum_DecimalSelector_GeneratesScalarInterceptor
✅ Sum_DoubleSelector_GeneratesScalarInterceptor
✅ Sum_FloatSelector_GeneratesScalarInterceptor
✅ Sum_IntSelector_GeneratesScalarInterceptor
✅ Sum_LongSelector_GeneratesScalarInterceptor
✅ Sum_NullableDecimalSelector_GeneratesScalarInterceptor
✅ Sum_NullableDoubleSelector_GeneratesScalarInterceptor
✅ Sum_NullableFloatSelector_GeneratesScalarInterceptor
✅ Sum_NullableIntSelector_GeneratesScalarInterceptor
✅ Sum_NullableLongSelector_GeneratesScalarInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.SelectManyTests
✅ SelectMany_CollectionSelector_GeneratesInterceptor
✅ SelectMany_WithResultSelector_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.SelectTests
✅ Select_AnonymousType_GeneratesGenericInterceptor
✅ Select_AnonymousType_WithComputedExpression_GeneratesCorrectly
✅ Select_NamedType_GeneratesConcreteInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.SetOperationTests
✅ ExceptBy_GeneratesInterceptor
✅ IntersectBy_GeneratesInterceptor
✅ UnionBy_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.SingleLambdaQueryableTests
✅ DistinctBy_GeneratesInterceptor
✅ OrderByDescending_GeneratesInterceptor
✅ SkipWhile_GeneratesInterceptor
✅ TakeWhile_GeneratesInterceptor
✅ ThenByDescending_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.WhereTests
✅ ChainedWhereAndSelect_GeneratesTwoInterceptors
✅ Where_CapturedInstanceField_GeneratesClosureAccess
✅ Where_CapturedVariable_GeneratesClosureAccess
✅ Where_PlainIQueryable_NotIntercepted
✅ Where_SimpleCondition_GeneratesInterceptor
✅ ExpressiveSharp.Generator.Tests.PolyfillInterceptorGenerator.ZipTests
✅ Zip_WithResultSelector_GeneratesInterceptor
✅ ./test-results/ExpressiveSharp.IntegrationTests.trx
71 tests were completed in 941ms with 71 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| ExpressiveSharp.IntegrationTests.Tests.AnonymousTypeInterceptorTests | 5✅ | 122ms | ||
| ExpressiveSharp.IntegrationTests.Tests.CommonScenarioTests | 50✅ | 232ms | ||
| ExpressiveSharp.IntegrationTests.Tests.MultiLambdaInterceptorTests | 3✅ | 29ms | ||
| ExpressiveSharp.IntegrationTests.Tests.ProjectableExpressiveTests | 7✅ | 8ms | ||
| ExpressiveSharp.IntegrationTests.Tests.StoreQueryTests | 6✅ | 23ms |
✅ ExpressiveSharp.IntegrationTests.Tests.AnonymousTypeInterceptorTests
✅ Join_AnonymousResultSelector_CompilesAndRuns
✅ Select_AnonymousType_ThenDistinctBy_CompilesAndRuns
✅ Select_AnonymousType_ThenOrderByDescending_CompilesAndRuns
✅ Select_AnonymousType_ThenSelectConcrete_CompilesAndRuns
✅ Select_AnonymousType_ThenWhere_CompilesAndRuns
✅ ExpressiveSharp.IntegrationTests.Tests.CommonScenarioTests
✅ GroupBy_GetGrade_CountsCorrectly
✅ GroupBy_StatusDescription_CountsCorrectly
✅ OrderBy_GetGrade_ReturnsSorted
✅ OrderBy_TagLength_NullsAppearFirst
✅ OrderByDescending_GetGrade_ReturnsSortedDescending
✅ OrderByDescending_Total_ReturnsSortedDescending
✅ Polyfill_Arithmetic_ProjectsCorrectly
✅ Polyfill_NullCoalescing_ProjectsCorrectly
✅ Polyfill_NullConditional_ProjectsCorrectly
✅ Polyfill_SimpleCondition_FiltersCorrectly
✅ Select_AllItemsAffordable_ReturnsCorrectFlags
✅ Select_CheckedTotal_ReturnsCorrectValues
✅ Select_ClampedPrice_ReturnsCorrectValues
✅ Select_ConditionalWithComparison_ReturnsCorrectValues
✅ Select_CustomerCity_ViaCustomerExpressive
✅ Select_CustomerCountry_TwoLevelChain
✅ Select_CustomerName_ReturnsCorrectNullableValues
✅ Select_DiscountedPrice_ReturnsCorrectValues
✅ Select_GetCategory_ReturnsCorrectValues
✅ Select_GetGrade_ReturnsCorrectValues
✅ Select_HasExpensiveItems_ReturnsCorrectFlags
✅ Select_InlineTuple_ProjectsCorrectly
✅ Select_InstanceMethod_ViaExpressiveFor_ReturnsCorrectValues
✅ Select_InstanceProperty_ViaExpressiveFor_ReturnsConstant
✅ Select_IsPriceQuantityDifferent_ReturnsCorrectValues
✅ Select_IsPriceQuantityMatch_ReturnsCorrectValues
✅ Select_ItemCount_ReturnsCorrectCounts
✅ Select_ItemTotal_ReturnsCorrectTotals
✅ Select_ItemTotalForExpensive_ReturnsCorrectTotals
✅ Select_NestedTernary_ReturnsCorrectValues
✅ Select_OrderDto_ProjectsCorrectly
✅ Select_PriceBreakpoints_ReturnsArrayLiteral
✅ Select_StatusDescription_ReturnsCorrectValues
✅ Select_Summary_ReturnsCorrectValues
✅ Select_SummaryConcat_ReturnsCorrectValues
✅ Select_TagLength_ReturnsCorrectNullableValues
✅ Select_Total_ReturnsCorrectValues
✅ Select_TupleWithExpressiveMember_ProjectsCorrectly
✅ Select_TupleWithNullable_ProjectsCorrectly
✅ Where_CheckedTotalGreaterThan100_FiltersCorrectly
✅ Where_ClampedPriceEquals100_FiltersCorrectly
✅ Where_CompoundCondition_FiltersCorrectly
✅ Where_CustomerCountryEquals_FiltersCorrectly
✅ Where_CustomerNameEquals_FiltersCorrectly
✅ Where_CustomerNameIsNull_FiltersCorrectly
✅ Where_IsPattern_NullCheck
✅ Where_IsPriceQuantityMatch_FiltersCorrectly
✅ Where_NoMatch_ReturnsEmpty
✅ Where_TotalGreaterThan100_FiltersCorrectly
✅ WithExpression_OnRecord_ReturnsModifiedInstance
✅ ExpressiveSharp.IntegrationTests.Tests.MultiLambdaInterceptorTests
✅ Join_NullableOuterKey_NonNullableInnerKey_CompilesAndRuns
✅ Join_ThreeLambdas_CompilesAndRuns
✅ SelectMany_WithResultSelector_SharedParamName_CompilesAndRuns
✅ ExpressiveSharp.IntegrationTests.Tests.ProjectableExpressiveTests
✅ ExpandExpressives_MemberInit_RewritesRhsOfProjection
✅ ExpandExpressives_Select_RewritesProjectableToFormula
✅ InitAccessor_StoredValueSurvivesDependencyMutation
✅ InitAccessor_StoredValueWins
✅ InMemoryConstruction_ReadsComputeFromFormula
✅ InMemoryMutation_FormulaReflectsChanges
✅ NullDependencies_FormulaUsesFallbacks
✅ ExpressiveSharp.IntegrationTests.Tests.StoreQueryTests
✅ FilterByCustomerName_ProjectTotal
✅ FilterByStatus_SelectCategory
✅ GroupByStatus_CountOrders
✅ OrderByGrade_SelectTotal
✅ OrderByGrade_ThenByTotal_CompoundSort
✅ ProjectToOrderDto_ForAllOrders
✅ ./test-results/ExpressiveSharp.Tests.trx
147 tests were completed in 568ms with 147 passed, 0 failed and 0 skipped.
✅ ExpressiveSharp.Tests.Extensions.ExpressionExtensionsTests
✅ ExpandExpressives_ExplicitTransformers_AppliedInOrder
✅ ExpandExpressives_ExplicitTransformers_OverrideOptions
✅ ExpandExpressives_NoTransformers_ExpandsExpressiveMembers
✅ ExpandExpressives_OptionsTransformers_UsedWhenProvided
✅ ExpressiveSharp.Tests.Extensions.ExpressiveQueryableExtensionsTests
✅ AsExpressive_DelegatesProperties
✅ AsExpressive_NullSource_ThrowsArgumentNullException
✅ AsExpressive_WrapsAsExpressiveQueryable
✅ ExpressiveSharp.Tests.Extensions.ExpressiveQueryableLinqExtensionsTests
✅ ChainedPassthrough_PreservesExpressiveQueryable
✅ Concat_PreservesExpressiveQueryable
✅ DefaultIfEmpty_PreservesExpressiveQueryable
✅ DefaultIfEmpty_WithValue_PreservesExpressiveQueryable
✅ Distinct_PreservesExpressiveQueryable
✅ Except_PreservesExpressiveQueryable
✅ Index_PreservesExpressiveQueryable
✅ Intersect_PreservesExpressiveQueryable
✅ Reverse_PreservesExpressiveQueryable
✅ Skip_PreservesExpressiveQueryable
✅ Take_PreservesExpressiveQueryable
✅ Union_PreservesExpressiveQueryable
✅ ExpressiveSharp.Tests.RelationalExtensions.WindowFrameBoundSqlExpressionTests
✅ BoundInfo_PropertyRoundtrips
✅ Equals_ComparesBoundInfo
✅ ToSqlFragment_FormatsEachBoundKindCorrectly
✅ ExpressiveSharp.Tests.RelationalExtensions.WindowFunctionSqlExpressionFrameTests
✅ Equals_IncludesFrameFields
✅ Print_MinWithNumericOffsets
✅ Print_NoFrame_OmitsFrameClause
✅ Print_RangeBetweenUnboundedPrecedingAndCurrentRow
✅ Print_RowsBetweenNumericPrecedingAndFollowing
✅ Print_RowsBetweenUnboundedPrecedingAndCurrentRow
✅ Print_RowsBetweenUnboundedPrecedingAndUnboundedFollowing
✅ Print_WithPartitionOrderAndFrame
✅ ExpressiveSharp.Tests.RelationalExtensions.WindowSpecSqlExpressionFrameTests
✅ Constructor_DefaultsFrameFieldsToNull
✅ Equals_IncludesFrameFields
✅ WithFrame_PreservesPartitionsAndOrderings
✅ WithFrame_ReturnsNewInstance
✅ WithOrdering_PreservesFrame
✅ WithPartition_PreservesFrame
✅ ExpressiveSharp.Tests.Services.ExpressionArgumentReplacerTests
✅ Visit_ComplexExpression_ReplacesAllMappedParameters
✅ Visit_ParameterInMapping_ReplacesWithMappedExpression
✅ Visit_ParameterNotInMapping_ReturnsOriginal
✅ ExpressiveSharp.Tests.Services.ExpressionClassNameGeneratorTests
✅ GenerateClassFullName_PrependsNamespace
✅ GenerateClassName_DottedNamespace
✅ GenerateClassName_GenericClassWithArity
✅ GenerateClassName_NestedClasses
✅ GenerateClassName_NullNamespace
✅ GenerateClassName_SimpleNamespaceAndClass
✅ GenerateFullName_PrependsNamespace
✅ GenerateMethodSuffix_ExplicitInterface
✅ GenerateMethodSuffix_GlobalPrefixStripped
✅ GenerateMethodSuffix_MultipleParameters
✅ GenerateMethodSuffix_SimpleMember
✅ GenerateMethodSuffix_WithParameters
✅ GenerateName_ExplicitInterfaceMember
✅ GenerateName_GenericClassWithArity
✅ GenerateName_NestedClassHierarchy
✅ GenerateName_NullNamespace
✅ GenerateName_ParameterTypeWithGlobalPrefix
✅ GenerateName_ParameterTypeWithInvalidChars
✅ GenerateName_SimpleNamespaceAndMember
✅ GenerateName_WithParameterTypes
✅ Namespace_ConstantIsCorrect
✅ ExpressiveSharp.Tests.Services.ExpressiveOptionsTests
✅ AddAndClear_ConcurrentAccess_NoExceptions
✅ AddTransformers_RegistersTransformers
✅ ClearTransformers_RemovesAll
✅ GetTransformers_ReturnsSnapshot_NotLiveReference
✅ ExpressiveSharp.Tests.Services.ExpressiveReplacerTests
✅ Replace_ExpressiveMethod_InlinesExpression
✅ Replace_ExpressiveProperty_InlinesExpression
✅ Replace_ExpressiveProperty_SubstitutesReceiver
✅ Replace_InterfaceCastOnProperty_UnwrapsConvert
✅ Replace_LambdaWithExpressiveProperty_ExpandsInBody
✅ Replace_NonExpressiveMember_PassesThrough
✅ Replace_WithMockResolver_NonDecoratedMember_PassesThrough
✅ Replace_WithMockResolver_PropertyInlined
✅ ExpressiveSharp.Tests.Services.ExpressiveResolverTests
✅ FindGeneratedExpression_MethodWithExpressive_ReturnsLambdaExpression
✅ FindGeneratedExpression_NonExpressiveMember_ThrowsInvalidOperationException
✅ FindGeneratedExpression_ProjectableProperty_BackingFieldIsNotInRegistry
✅ FindGeneratedExpression_ProjectableProperty_BodyIsFormulaOnly
✅ FindGeneratedExpression_ProjectableProperty_ResolvesByPropertyGetter
✅ FindGeneratedExpression_PropertyBody_ContainsMultiply
✅ FindGeneratedExpression_PropertyWithExpressive_ReturnsLambdaExpression
✅ FindGeneratedExpression_SameMember_ReturnsCachedResult
✅ FindGeneratedExpressionViaReflection_KnownMember_ReturnsExpression
✅ FindGeneratedExpressionViaReflection_UnknownMember_ReturnsNull
✅ ExpressiveSharp.Tests.Transformers.ConvertLoopsToLinqTests
✅ ForEach_All_RewritesToLinqAll
✅ ForEach_Any_RewritesToLinqAny
✅ ForEach_ConditionalSum_RewritesToWhereAndSum
✅ ForEach_Count_RewritesToLinqCount
✅ ForEach_Max_RewritesToLinqMax
✅ ForEach_Min_ExecutesCorrectly
✅ ForEach_Min_RewritesToLinqMin
✅ ForEach_Select_ExecutesCorrectly
✅ ForEach_Select_RewritesToLinqSelectToList
✅ ForEach_Sum_ExecutesCorrectly
✅ ForEach_Sum_RewritesToLinqSum
✅ ForEach_UnrecognizedPattern_Throws
✅ ExpressiveSharp.Tests.Transformers.FlattenBlockExpressionsTests
✅ BlockInsideLambda_FlattensBody
✅ ImplementsIExpressionTreeTransformer
✅ MultipleAssignmentsSameVariable_ReturnsBlockUnchanged
✅ NestedBlocks_RecursivelyFlattened
✅ NonBlockExpression_PassesThrough
✅ NoVariables_MultipleExpressions_ReturnsBlock
✅ NoVariables_SingleExpression_ReturnsThatExpression
✅ SingleVariableAssignment_Inlines
✅ ThreeChainedDependencies_FullyInlines
✅ TransitiveDependencies_FullyResolves
✅ VariableWithoutAssignment_ReturnsBlockUnchanged
✅ ExpressiveSharp.Tests.Transformers.FlattenConcatArrayCallsTests
✅ EmptyArray_ReturnsEmptyConstant
✅ FiveElements_ChainsConcat4ThenConcat2
✅ FourElements_UsesConcat4
✅ NonArrayArgument_NotTransformed
✅ ProducesCorrectValue_WhenCompiled
✅ SevenElements_ChainsConcat4ThenConcat4
✅ SingleElement_ReturnsThatElement
✅ ThreeElements_UsesConcat3
✅ TwoElements_UsesConcat2
✅ ExpressiveSharp.Tests.Transformers.FlattenTupleComparisonsTests
✅ FieldAccessItem2_ReplacedWithSecondArgument
✅ FieldAccessOnNewValueTuple_ReplacedWithArgument
✅ FieldAccessOnNonNewExpression_LeftUnchanged
✅ NonTupleExpression_LeftUnchanged
✅ TupleEqualityComparison_SimplifiesToElementWise
✅ ExpressiveSharp.Tests.Transformers.RemoveNullConditionalPatternsTests
✅ ChainedNullConditional_RemovesNestedTernaries
✅ ChainedNullConditional_WithInnerMethodCall_KeepsOuterNullCheck
✅ ConvertWrappingMethodCall_KeepsNullCheck
✅ DefaultExpressionAsFalseBranch_Matches
✅ ImplementsIExpressionTreeTransformer
✅ MethodCallOnReceiver_KeepsNullCheck
✅ NonDefaultFalseBranch_NoTransform
✅ NonMatchingConditional_NoTransform
✅ SimpleNullCheck_MemberAccess_RemovesPattern
✅ TrueBranchDoesNotAccessReceiver_NoTransform
✅ WithConvertWrapping_KeepsConvertWhenTypesDontMatch
✅ ExpressiveSharp.Tests.Transformers.ReplaceThrowWithDefaultTests
✅ CoalesceWithThrow_CompilesCorrectly
✅ CoalesceWithThrow_ReplacesThrowWithDefault
✅ ConditionalWithThrowInFalse_ReplacesThrowWithDefault
✅ ConditionalWithThrowInTrue_ReplacesThrowWithDefault
✅ NonThrowCoalesce_Unchanged
✅ StandaloneThrow_BecomesDefault
✅ TypeExtensionsTests
✅ GetConcreteMethod_InterfaceMethod_ReturnsImplementation
✅ GetConcreteMethod_NonVirtualMethod_ReturnsOriginal
✅ GetConcreteMethod_SameDeclaringType_ReturnsOriginal
✅ GetConcreteMethod_StaticMethod_ReturnsOriginal
✅ GetConcreteMethod_VirtualOverride_ReturnsDerivedMethod
✅ GetConcreteProperty_InterfaceProperty_ReturnsImplementation
✅ GetConcreteProperty_SameDeclaringType_ReturnsOriginal
✅ GetConcreteProperty_VirtualOverride_ReturnsDerivedProperty
✅ GetNestedTypePath_DeepNesting_ReturnsFullPath
✅ GetNestedTypePath_NonNestedType_ReturnsSingleElement
✅ GetNestedTypePath_SingleLevelNesting_ReturnsTwoElements
Loading