@@ -44,4 +44,99 @@ public void CreateArrayView()
4444 MemoryMarshal . CreateArrayView ( array , 0 , 5 ) . Length ,
4545 Is . EqualTo ( 5 ) ) ;
4646 }
47+
48+ [ Test ]
49+ public static void ReadOnlyMemory_TryGetStringView ( )
50+ {
51+ const string Input = "0123456789" ;
52+
53+ var memory = Input . AsMemory ( ) ;
54+ Assert . That ( memory . IsEmpty , Is . False ) ;
55+
56+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out var view ) , Is . True ) ;
57+ Assert . That ( view , Is . EqualTo ( Input ) ) ;
58+
59+ memory = memory [ 1 ..] ;
60+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out view ) , Is . True ) ;
61+ Assert . That ( view , Is . EqualTo ( Input [ 1 ..] ) ) ;
62+ Assert . That ( view . Length , Is . EqualTo ( Input . Length - 1 ) ) ;
63+
64+ memory = memory [ 1 ..] ;
65+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out view ) , Is . True ) ;
66+ Assert . That ( view , Is . EqualTo ( Input [ 2 ..] ) ) ;
67+ Assert . That ( view . Length , Is . EqualTo ( Input . Length - 2 ) ) ;
68+
69+ memory = memory . Slice ( 3 , 2 ) ;
70+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out view ) , Is . True ) ;
71+ Assert . That ( view , Is . EqualTo ( Input [ 5 ..7 ] ) ) ;
72+ Assert . That ( view . Length , Is . EqualTo ( 2 ) ) ;
73+
74+ memory = memory [ memory . Length ..] ;
75+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out view ) , Is . True ) ;
76+ Assert . That ( view . Length , Is . Zero ) ;
77+
78+ memory = memory [ ..] ;
79+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out view ) , Is . True ) ;
80+ Assert . That ( view . Length , Is . Zero ) ;
81+
82+ memory = memory [ ..0 ] ;
83+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out view ) , Is . True ) ;
84+ Assert . That ( view . Length , Is . Zero ) ;
85+
86+ Assert . That ( memory . IsEmpty , Is . True ) ;
87+ }
88+
89+ [ Test ]
90+ public static void ReadOnlyMemory_TryGetStringView_Array_ReturnsFalse ( )
91+ {
92+ var memory = new char [ 10 ] . AsMemory ( ) ;
93+ Assert . That ( MemoryMarshal . TryGetStringView ( memory , out var view ) , Is . False ) ;
94+ Assert . That ( view . IsDefault , Is . True ) ;
95+ }
96+
97+ [ Test ]
98+ public static void ReadOnlyMemory_TryGetArrayView ( )
99+ {
100+ var buffer = Enumerable . Range ( 0 , 10 ) . ToArray ( ) ;
101+ var memory = buffer . AsMemory ( ) ;
102+
103+ Assert . That ( MemoryMarshal . TryGetArrayView < int > ( memory , out var view ) , Is . True ) ;
104+ Assert . That ( view , Is . EquivalentTo ( buffer ) ) ;
105+ }
106+
107+ [ Test ]
108+ public static void ReadOnlyMemory_TryGetArrayView_EmptyArray ( )
109+ {
110+ var buffer = Array . Empty < int > ( ) ;
111+ var memory = buffer . AsMemory ( ) ;
112+
113+ Assert . That ( MemoryMarshal . TryGetArrayView < int > ( memory , out var view ) , Is . True ) ;
114+ Assert . That ( view , Is . EquivalentTo ( buffer ) ) ;
115+ }
116+
117+ [ Test ]
118+ public static void ReadOnlyMemory_TryGetArrayView_Default ( )
119+ {
120+ var memory = default ( ReadOnlyMemory < int > ) ;
121+
122+ Assert . That ( MemoryMarshal . TryGetArrayView ( memory , out var view ) , Is . True ) ;
123+ Assert . That ( view , Is . EquivalentTo ( Array . Empty < int > ( ) ) ) ;
124+ }
125+
126+ [ Test ]
127+ public static void ReadOnlyMemory_TryGetArrayView_Empty ( )
128+ {
129+ var memory = ReadOnlyMemory < int > . Empty ;
130+
131+ Assert . That ( MemoryMarshal . TryGetArrayView ( memory , out var view ) , Is . True ) ;
132+ Assert . That ( view , Is . EquivalentTo ( Array . Empty < int > ( ) ) ) ;
133+ }
134+
135+ [ Test ]
136+ public static void ReadOnlyMemory_TryGetArrayView_String_ReturnsFalse ( )
137+ {
138+ var memory = "0123456789" . AsMemory ( ) ;
139+ Assert . That ( MemoryMarshal . TryGetArrayView ( memory , out var view ) , Is . False ) ;
140+ Assert . That ( view . IsDefault , Is . True ) ;
141+ }
47142}
0 commit comments