1+ // Copyright (c) .NET Foundation. All rights reserved.
2+ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+ using System . Collections . Generic ;
5+ using System . Linq . Expressions ;
6+ using System . Reflection ;
7+ using NuGet . Server . DataServices ;
8+ using Xunit ;
9+
10+ namespace NuGet . Server . Tests
11+ {
12+ public class NormalizeVersionInterceptorTest
13+ {
14+ private static readonly MemberInfo _versionMember = typeof ( ODataPackage ) . GetProperty ( "Version" ) ;
15+ private static readonly MemberInfo _normalizedVersionMember = typeof ( ODataPackage ) . GetProperty ( "NormalizedVersion" ) ;
16+
17+ public static IEnumerable < object [ ] > TheoryData
18+ {
19+ get
20+ {
21+ return new [ ]
22+ {
23+ new object [ ]
24+ {
25+ Expression . MakeBinary (
26+ ExpressionType . Equal ,
27+ Expression . Constant ( "1.0.0.0" ) ,
28+ Expression . MakeMemberAccess ( Expression . Parameter ( typeof ( ODataPackage ) ) , _versionMember ) ) ,
29+
30+ Expression . MakeBinary (
31+ ExpressionType . Equal ,
32+ Expression . Constant ( "1.0.0" ) ,
33+ Expression . MakeMemberAccess ( Expression . Parameter ( typeof ( ODataPackage ) ) , _normalizedVersionMember ) )
34+ } ,
35+
36+ new object [ ]
37+ {
38+ Expression . MakeBinary (
39+ ExpressionType . Equal ,
40+ Expression . MakeMemberAccess ( Expression . Parameter ( typeof ( ODataPackage ) ) , _versionMember ) ,
41+ Expression . Constant ( "1.0.0.0" ) ) ,
42+
43+ Expression . MakeBinary (
44+ ExpressionType . Equal ,
45+ Expression . Constant ( "1.0.0" ) ,
46+ Expression . MakeMemberAccess ( Expression . Parameter ( typeof ( ODataPackage ) ) , _normalizedVersionMember ) )
47+ }
48+ } ;
49+ }
50+ }
51+
52+ [ Theory ]
53+ [ MemberData ( "TheoryData" ) ]
54+ public void RewritesVersionPropertyNameToNormalizedVersionPropertyName ( Expression originalExpression , Expression expectedExpression )
55+ {
56+ // Arrange
57+ var interceptor = new NormalizeVersionInterceptor ( ) ;
58+
59+ // Act
60+ var rewrittenExpression = interceptor . Visit ( originalExpression ) ;
61+
62+ // Assert
63+ Assert . Equal ( rewrittenExpression . ToString ( ) , expectedExpression . ToString ( ) ) ;
64+ }
65+ }
66+ }
0 commit comments