Improve string interpolation: multi-arg Concat, alignment fix, docs, and transformer #21
GitHub Actions / Container Test Results (Postgres)
succeeded
Apr 6, 2026 in 0s
303 passed, 0 failed and 1 skipped
✅ ./test-results/results.trx
304 tests were completed in 58s with 303 passed, 0 failed and 1 skipped.
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Postgres.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.Postgres.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.Postgres.CommonScenarioTests
✅ GroupBy_GetGrade_CountsCorrectly
✅ GroupBy_StatusDescription_CountsCorrectly
✅ OrderBy_GetGrade_ReturnsSorted
✅ 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.Postgres.ExecuteUpdateTests
✅ ExecuteUpdate_BasicConstant_Works
✅ ExecuteUpdate_MultipleProperties_WithModernSyntax
✅ ExecuteUpdate_NullCoalescing_TranslatesToSql
✅ ExecuteUpdate_SwitchExpression_TranslatesToSql
✅ ExecuteUpdateAsync_SwitchExpression_TranslatesToSql
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Postgres.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.Postgres.IncludeTests
✅ AsNoTracking_Include_Executes
✅ ChainedModifiers_Include_Execute
✅ IgnoreQueryFilters_Executes
✅ Include_LoadsRelatedCustomer
✅ Include_ThenInclude_LoadsTwoLevelNavigation
✅ Include_ThenWhere_OnNavigationProperty_ExecutesCorrectly
✅ StringInclude_LoadsNavigation
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Postgres.QueryFilterTests
✅ BlockBodyFilter_CountAsync_RespectsFilter
✅ BlockBodyFilter_FiltersOutNullEmails
✅ BlockBodyFilter_IgnoreQueryFilters_ReturnsAll
✅ ExpressionBodyFilter_CountAsync_RespectsFilter
✅ ExpressionBodyFilter_FiltersOutZeroTotals
✅ ExpressionBodyFilter_IgnoreQueryFilters_ReturnsAll
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Postgres.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.Postgres.TransformerBehaviorTests
✅ ConvertLoopsToLinq_EnablesForeachInExpressive
✅ FlattenBlockExpressions_InlinesLocalVariable
✅ FlattenTupleComparisons_RewritesTupleEquality
✅ RemoveNullConditionalPatterns_StripsQuestionDot
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Postgres.UseExpressivesConventionTests
✅ BlockBody_InExpressiveMember_TranslatesCorrectly
✅ ExpressiveDbSet_EntityIsDiscoveredInModel
✅ ExpressiveProperties_AreMarkedUnmapped
✅ NullConditional_InExpressiveMember_TranslatesCorrectly
✅ ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Tests.Postgres.WindowFunctionTests
✅ DenseRank_WithTies_ReturnsNoGaps
✅ IndexedSelect_ReturnsZeroBasedIndices
✅ MultipleWindowFunctions_InSameSelect
✅ Ntile_DistributesIntoBuckets
✅ Rank_WithTies_ReturnsGaps
✅ RowNumber_OverExpressiveTotal_UsesExpandedExpression
✅ RowNumber_ReturnsCorrectSequentialNumbers
✅ RowNumber_WithPartitionBy_ResetsPerGroup
✅ 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.ExecuteUpdateTests
✅ ExecuteUpdate_BasicConstant_Works
✅ ExecuteUpdate_MultipleProperties_WithModernSyntax
✅ ExecuteUpdate_NullCoalescing_TranslatesToSql
✅ ExecuteUpdate_SwitchExpression_TranslatesToSql
✅ ExecuteUpdateAsync_SwitchExpression_TranslatesToSql
✅ 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.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
✅ DenseRank_WithTies_ReturnsNoGaps
✅ IndexedSelect_ReturnsZeroBasedIndices
✅ MultipleWindowFunctions_InSameSelect
✅ Ntile_DistributesIntoBuckets
✅ Rank_WithTies_ReturnsGaps
✅ RowNumber_OverExpressiveTotal_UsesExpandedExpression
✅ RowNumber_ReturnsCorrectSequentialNumbers
✅ RowNumber_WithPartitionBy_ResetsPerGroup
Loading