diff --git a/Terminal.Gui/Views/TextValidateField.cs b/Terminal.Gui/Views/TextValidateField.cs
index 530287303..940480b57 100644
--- a/Terminal.Gui/Views/TextValidateField.cs
+++ b/Terminal.Gui/Views/TextValidateField.cs
@@ -81,16 +81,14 @@ namespace Terminal.Gui {
bool IsValid { get; }
///
- /// Set the input text, and get the formatted string for display.
+ /// Set the input text and get the current value.
///
ustring Text { get; set; }
///
- /// Mask used for validation.
- /// Not always a mask, can by a regex expression.
- /// TODO: Maybe we can change the name.
+ /// Gets the formatted string for display.
///
- ustring Mask { get; set; }
+ ustring DisplayText { get; }
}
//////////////////////////////////////////////////////////////////////////////
@@ -107,22 +105,27 @@ namespace Terminal.Gui {
///
public class NetMaskedTextProvider : ITextValidateProvider {
MaskedTextProvider provider;
- string text;
///
/// Empty Constructor
///
- public NetMaskedTextProvider () { }
+ public NetMaskedTextProvider (string mask)
+ {
+ Mask = mask;
+ }
- ///
+ ///
+ /// Mask property
+ ///
public ustring Mask {
get {
return provider?.Mask;
}
set {
+ var current = provider != null ? provider.ToString (false, false) : string.Empty;
provider = new MaskedTextProvider (value == ustring.Empty ? "&&&&&&" : value.ToString ());
- if (string.IsNullOrEmpty (text) == false) {
- provider.Set (text);
+ if (string.IsNullOrEmpty (current) == false) {
+ provider.Set (current);
}
}
}
@@ -130,10 +133,9 @@ namespace Terminal.Gui {
///
public ustring Text {
get {
- return provider.ToDisplayString ();
+ return provider.ToString ();
}
set {
- text = value.ToString ();
provider.Set (value.ToString ());
}
}
@@ -144,6 +146,9 @@ namespace Terminal.Gui {
///
public bool Fixed => true;
+ ///
+ public ustring DisplayText => provider.ToDisplayString ();
+
///
public int Cursor (int pos)
{
@@ -212,20 +217,25 @@ namespace Terminal.Gui {
public class TextRegexProvider : ITextValidateProvider {
Regex regex;
List text;
- List mask;
+ List pattern;
///
- /// Empty Constructor
+ /// Empty Constructor.
///
- public TextRegexProvider () { }
+ public TextRegexProvider (string pattern)
+ {
+ Pattern = pattern;
+ }
- ///
- public ustring Mask {
+ ///
+ /// Regex pattern property.
+ ///
+ public ustring Pattern {
get {
- return ustring.Make (mask);
+ return ustring.Make (pattern);
}
set {
- mask = value.ToRuneList ();
+ pattern = value.ToRuneList ();
CompileMask ();
SetupText ();
}
@@ -242,6 +252,9 @@ namespace Terminal.Gui {
}
}
+ ///
+ public ustring DisplayText => Text;
+
///
public bool IsValid {
get {
@@ -257,6 +270,7 @@ namespace Terminal.Gui {
///
public bool ValidateOnInput { get; set; } = true;
+
bool Validate (List text)
{
var match = regex.Match (ustring.Make (text).ToString ());
@@ -340,7 +354,7 @@ namespace Terminal.Gui {
///
private void CompileMask ()
{
- regex = new Regex (ustring.Make (mask).ToString (), RegexOptions.Compiled);
+ regex = new Regex (ustring.Make (pattern).ToString (), RegexOptions.Compiled);
}
}
#endregion
@@ -349,58 +363,66 @@ namespace Terminal.Gui {
///
/// Text field that validates input through a
///
- ///
- public class TextValidateField : View, ITextValidateProvider where T : class {
+ public class TextValidateField : View {
ITextValidateProvider provider;
int cursorPosition = 0;
///
- /// Initializes a new instance of the class using positioning.
+ /// Initializes a new instance of the class using positioning.
///
- public TextValidateField ()
+ public TextValidateField () : this (null)
{
}
///
- /// Initializes a new instance of the class using positioning.
+ /// Initializes a new instance of the class using positioning.
///
- /// Mask
- public TextValidateField (ustring mask) : this (mask, ustring.Empty) { }
-
- ///
- /// Initializes a new instance of the class using positioning.
- ///
- ///
- /// Initial Value
- public TextValidateField (ustring mask, ustring text)
+ public TextValidateField (ITextValidateProvider provider)
{
- provider = Activator.CreateInstance (typeof (T)) as ITextValidateProvider;
+ if (provider != null) {
+ Provider = provider;
+ }
- Mask = mask;
- Text = text;
+ Initialize ();
+ }
- this.Width = text == ustring.Empty ? 20 : Text.Length;
- this.Height = 1;
- this.CanFocus = true;
+ void Initialize ()
+ {
+ Height = 1;
+ CanFocus = true;
}
///
- /// Get the Provider
+ /// Provider
///
- public T Provider => (T)provider;
+ public ITextValidateProvider Provider {
+ get => provider;
+ set {
+ provider = value;
+ if (provider.Fixed == true) {
+ this.Width = provider.DisplayText == ustring.Empty ? 10 : Text.Length;
+ }
+ HomeKeyHandler ();
+ SetNeedsDisplay ();
+ }
+ }
///
public override bool MouseEvent (MouseEvent mouseEvent)
{
- var c = provider.Cursor (mouseEvent.X - GetMargins (Frame.Width).left);
- if (provider.Fixed == false && TextAlignment == TextAlignment.Right && Text.Length > 0) {
- c += 1;
+ if (mouseEvent.Flags.HasFlag (MouseFlags.Button1Pressed)) {
+
+ var c = provider.Cursor (mouseEvent.X - GetMargins (Frame.Width).left);
+ if (provider.Fixed == false && TextAlignment == TextAlignment.Right && Text.Length > 0) {
+ c += 1;
+ }
+ cursorPosition = c;
+ SetFocus ();
+ SetNeedsDisplay ();
+ return true;
}
- cursorPosition = c;
- SetFocus ();
- SetNeedsDisplay ();
- return true;
+ return false;
}
///
@@ -424,22 +446,6 @@ namespace Terminal.Gui {
}
}
- ///
- /// Mask
- ///
- public ustring Mask {
- get {
- return provider.Mask;
- }
- set {
- provider.Mask = value;
-
- cursorPosition = provider.CursorStart ();
-
- SetNeedsDisplay ();
- }
- }
-
///inheritdoc/>
public override void PositionCursor ()
{
@@ -501,8 +507,8 @@ namespace Terminal.Gui {
// Content
Driver.SetAttribute (textColor);
// Content
- for (int i = 0; i < provider.Text.Length; i++) {
- Driver.AddRune (provider.Text [i]);
+ for (int i = 0; i < provider.DisplayText.Length; i++) {
+ Driver.AddRune (provider.DisplayText [i]);
}
// Right Margin
@@ -615,75 +621,6 @@ namespace Terminal.Gui {
return true;
}
- ///
- /// Set Cursor position to .
- ///
- ///
- /// Return first valid position.
- public int Cursor (int pos)
- {
- return provider.Cursor (pos);
- }
-
- ///
- /// First valid position before .
- ///
- ///
- /// New cursor position if any, otherwise returns
- public int CursorLeft (int pos)
- {
- return provider.CursorLeft (pos);
- }
-
- ///
- /// First valid position after .
- ///
- /// Current position.
- /// New cursor position if any, otherwise returns
- public int CursorRight (int pos)
- {
- return provider.CursorRight (pos);
- }
-
- ///
- /// Find the first valid character position.
- ///
- /// New cursor position.
- public int CursorStart ()
- {
- return provider.CursorStart ();
- }
-
- ///
- /// Find the last valid character position.
- ///
- /// New cursor position.
- public int CursorEnd ()
- {
- return provider.CursorEnd ();
- }
-
- ///
- /// Deletes the current character in .
- ///
- ///
- /// true if the character was successfully removed, otherwise false.
- public bool Delete (int pos)
- {
- return provider.Delete (pos);
- }
-
- ///
- /// Insert character in position .
- ///
- ///
- ///
- /// true if the character was successfully inserted, otherwise false.
- public bool InsertAt (char ch, int pos)
- {
- return provider.InsertAt (ch, pos);
- }
-
///
/// This property returns true if the input is valid.
///
@@ -696,7 +633,5 @@ namespace Terminal.Gui {
return provider.IsValid;
}
}
-
- public bool Fixed => throw new NotImplementedException ();
}
}
diff --git a/UICatalog/Scenarios/Text.cs b/UICatalog/Scenarios/Text.cs
index c84140bfd..7d99e8574 100644
--- a/UICatalog/Scenarios/Text.cs
+++ b/UICatalog/Scenarios/Text.cs
@@ -112,35 +112,35 @@ namespace UICatalog {
_timeField.TimeChanged += TimeChanged;
// MaskedTextProvider
- var netProvider = new Label (".Net MaskedTextProvider [ 999 000 LLL >LLL| AAA aaa ]") {
+ var netProviderLabel = new Label (".Net MaskedTextProvider [ 999 000 LLL >LLL| AAA aaa ]") {
X = Pos.Left (dateField),
Y = Pos.Bottom (dateField) + 1
};
- Win.Add (netProvider);
+ Win.Add (netProviderLabel);
- var netProviderField = new TextValidateField ("999 000 LLL >LLL| AAA aaa") {
- X = Pos.Right (netProvider) + 1,
- Y = Pos.Y (netProvider),
- Width = 40,
- TextAlignment = TextAlignment.Centered
+ var netProvider = new NetMaskedTextProvider ("999 000 LLL > LLL | AAA aaa");
+
+ var netProviderField = new TextValidateField (netProvider) {
+ X = Pos.Right (netProviderLabel) + 1,
+ Y = Pos.Y (netProviderLabel)
};
+
Win.Add (netProviderField);
// TextRegexProvider
var regexProvider = new Label ("Gui.cs TextRegexProvider [ ^([0-9]?[0-9]?[0-9]|1000)$ ]") {
- X = Pos.Left (netProvider),
- Y = Pos.Bottom (netProvider) + 1
+ X = Pos.Left (netProviderLabel),
+ Y = Pos.Bottom (netProviderLabel) + 1
};
Win.Add (regexProvider);
- var regexProviderField = new TextValidateField ("^([0-9]?[0-9]?[0-9]|1000)$") {
+ var provider2 = new TextRegexProvider ("^([0-9]?[0-9]?[0-9]|1000)$") { ValidateOnInput = false };
+ var regexProviderField = new TextValidateField (provider2) {
X = Pos.Right (regexProvider) + 1,
Y = Pos.Y (regexProvider),
- Width = 40,
+ Width = 30,
TextAlignment = TextAlignment.Centered
};
- // Access the inner Provider to configure.
- regexProviderField.Provider.ValidateOnInput = false;
Win.Add (regexProviderField);
}
diff --git a/UnitTests/TextValidateFieldTests.cs b/UnitTests/TextValidateFieldTests.cs
index 64908611f..b04a49a44 100644
--- a/UnitTests/TextValidateFieldTests.cs
+++ b/UnitTests/TextValidateFieldTests.cs
@@ -15,14 +15,15 @@ namespace Terminal.Gui.Views {
{
// *
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1___)--", field.Text);
+ Assert.Equal ("--(1___)--", field.Provider.DisplayText);
+ Assert.Equal ("--(1 )--", field.Text);
}
[Fact]
@@ -30,14 +31,15 @@ namespace Terminal.Gui.Views {
{
// *
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
field.ProcessKey (new KeyEvent (Key.A, new KeyModifiers { }));
- Assert.Equal ("--(____)--", field.Text);
+ Assert.Equal ("--( )--", field.Text);
+ Assert.Equal ("--(____)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
}
@@ -46,7 +48,7 @@ namespace Terminal.Gui.Views {
{
// *
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
@@ -57,7 +59,8 @@ namespace Terminal.Gui.Views {
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1___)--", field.Text);
+ Assert.Equal ("--(1___)--", field.Provider.DisplayText);
+ Assert.Equal ("--(1 )--", field.Text);
Assert.False (field.IsValid);
}
@@ -66,7 +69,7 @@ namespace Terminal.Gui.Views {
{
// *
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
@@ -74,7 +77,9 @@ namespace Terminal.Gui.Views {
field.ProcessKey (new KeyEvent (Key.End, new KeyModifiers { }));
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(___1)--", field.Text);
+
+ Assert.Equal ("--(___1)--", field.Provider.DisplayText);
+ Assert.Equal ("--( 1)--", field.Text);
Assert.False (field.IsValid);
}
@@ -83,7 +88,7 @@ namespace Terminal.Gui.Views {
{
// *
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
@@ -93,7 +98,8 @@ namespace Terminal.Gui.Views {
}
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(___1)--", field.Text);
+ Assert.Equal ("--(___1)--", field.Provider.DisplayText);
+ Assert.Equal ("--( 1)--", field.Text);
Assert.False (field.IsValid);
}
@@ -102,7 +108,7 @@ namespace Terminal.Gui.Views {
{
// *
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
@@ -112,7 +118,8 @@ namespace Terminal.Gui.Views {
}
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1___)--", field.Text);
+ Assert.Equal ("--(1___)--", field.Provider.DisplayText);
+ Assert.Equal ("--(1 )--", field.Text);
Assert.False (field.IsValid);
}
@@ -121,21 +128,21 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1___)--", field.Text);
+ Assert.Equal ("--(1 )--", field.Text);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers { }));
- Assert.Equal ("--(12__)--", field.Text);
+ Assert.Equal ("--(12 )--", field.Text);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.D3, new KeyModifiers { }));
- Assert.Equal ("--(123_)--", field.Text);
+ Assert.Equal ("--(123 )--", field.Text);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.D4, new KeyModifiers { }));
@@ -148,25 +155,25 @@ namespace Terminal.Gui.Views {
{
// ** **
// 01234567890
- var field = new TextValidateField ("--(00-00)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(00-00)--")) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1_-__)--", field.Text);
+ Assert.Equal ("--(1_-__)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.D2, new KeyModifiers { }));
- Assert.Equal ("--(12-__)--", field.Text);
+ Assert.Equal ("--(12-__)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.D3, new KeyModifiers { }));
- Assert.Equal ("--(12-3_)--", field.Text);
+ Assert.Equal ("--(12-3_)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.D4, new KeyModifiers { }));
- Assert.Equal ("--(12-34)--", field.Text);
+ Assert.Equal ("--(12-34)--", field.Provider.DisplayText);
Assert.True (field.IsValid);
}
@@ -176,7 +183,7 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--", "1234") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--") { Text = "1234" }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
@@ -190,12 +197,13 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--", "12345") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--") { Text = "12345" }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
- Assert.Equal ("--(____)--", field.Text);
+ Assert.Equal ("--(____)--", field.Provider.DisplayText);
+ Assert.Equal ("--( )--", field.Text);
Assert.False (field.IsValid);
}
@@ -204,12 +212,13 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--", "123") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--") { Text = "123" }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
- Assert.Equal ("--(123_)--", field.Text);
+ Assert.Equal ("--(123_)--", field.Provider.DisplayText);
+ Assert.Equal ("--(123 )--", field.Text);
Assert.False (field.IsValid);
}
@@ -218,19 +227,19 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--", "1234") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--") { Text = "1234" }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
- Assert.Equal ("--(1234)--", field.Text);
+ Assert.Equal ("--(1234)--", field.Provider.DisplayText);
Assert.True (field.IsValid);
field.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers { }));
field.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers { }));
field.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers { }));
- Assert.Equal ("--(_234)--", field.Text);
+ Assert.Equal ("--(_234)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.CursorRight, new KeyModifiers { }));
@@ -240,7 +249,7 @@ namespace Terminal.Gui.Views {
field.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers { }));
field.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers { }));
- Assert.Equal ("--(_2_4)--", field.Text);
+ Assert.Equal ("--(_2_4)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
}
@@ -249,7 +258,7 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--", "1234") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--") { Text = "1234" }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
@@ -258,20 +267,20 @@ namespace Terminal.Gui.Views {
field.ProcessKey (new KeyEvent (Key.End, new KeyModifiers { }));
field.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers { }));
- Assert.Equal ("--(12_4)--", field.Text);
+ Assert.Equal ("--(12_4)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers { }));
- Assert.Equal ("--(1__4)--", field.Text);
+ Assert.Equal ("--(1__4)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
field.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers { }));
- Assert.Equal ("--(___4)--", field.Text);
+ Assert.Equal ("--(___4)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
// One more
field.ProcessKey (new KeyEvent (Key.Backspace, new KeyModifiers { }));
- Assert.Equal ("--(___4)--", field.Text);
+ Assert.Equal ("--(___4)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
}
@@ -281,7 +290,7 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Left,
Width = 30
};
@@ -297,7 +306,7 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Left,
Width = 30
};
@@ -306,8 +315,9 @@ namespace Terminal.Gui.Views {
Assert.Equal ("--(1234)--", field.Text);
Assert.True (field.IsValid);
- field.Mask = "--------(00000000)--------";
- Assert.Equal ("--------(1234____)--------", field.Text);
+ var provider = field.Provider as NetMaskedTextProvider;
+ provider.Mask = "--------(00000000)--------";
+ Assert.Equal ("--------(1234____)--------", field.Provider.DisplayText);
Assert.False (field.IsValid);
}
@@ -316,21 +326,21 @@ namespace Terminal.Gui.Views {
{
// ****
// 0123456789
- var field = new TextValidateField ("--(0000)--") {
+ var field = new TextValidateField (new NetMaskedTextProvider ("--(0000)--")) {
TextAlignment = TextAlignment.Left,
Width = 30
};
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1___)--", field.Text);
+ Assert.Equal ("--(1___)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
- field.MouseEvent (new MouseEvent () { X = 25, Flags = MouseFlags.Button1Clicked });
+ field.MouseEvent (new MouseEvent () { X = 25, Flags = MouseFlags.Button1Pressed });
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
- Assert.Equal ("--(1__1)--", field.Text);
+ Assert.Equal ("--(1__1)--", field.Provider.DisplayText);
Assert.False (field.IsValid);
}
}
@@ -344,13 +354,10 @@ namespace Terminal.Gui.Views {
[Fact]
public void Input_Without_Validate_On_Input ()
{
- var field = new TextValidateField ("^[0-9][0-9][0-9]$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9][0-9][0-9]$") { ValidateOnInput = false }) {
Width = 20
};
- // Let you input
- field.Provider.ValidateOnInput = false;
-
field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers { }));
Assert.Equal ("1", field.Text);
Assert.False (field.IsValid);
@@ -371,7 +378,7 @@ namespace Terminal.Gui.Views {
[Fact]
public void Input_With_Validate_On_Input_Set_Text ()
{
- var field = new TextValidateField ("^[0-9][0-9][0-9]$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9][0-9][0-9]$")) {
Width = 20
};
@@ -391,22 +398,10 @@ namespace Terminal.Gui.Views {
Assert.True (field.IsValid);
}
- [Fact]
- public void Empty_Mask_Does_Not_Validate ()
- {
- var field = new TextValidateField () {
- Width = 20
- };
-
- field.ProcessKey (new KeyEvent (Key.D1, new KeyModifiers ()));
- Assert.Equal ("", field.Text);
- Assert.False (field.IsValid);
- }
-
[Fact]
public void Text_With_All_Charset ()
{
- var field = new TextValidateField ("^[0-9][0-9][0-9]$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9][0-9][0-9]$")) {
Width = 20
};
@@ -432,7 +427,7 @@ namespace Terminal.Gui.Views {
}
try {
- var field = new TextValidateField (mask) {
+ var field = new TextValidateField (new TextRegexProvider (mask)) {
Width = 20
};
} catch (RegexParseException ex) {
@@ -447,7 +442,7 @@ namespace Terminal.Gui.Views {
{
// Range 0 to 1000
// Accepts 001 too.
- var field = new TextValidateField ("^[0-9]?[0-9]?[0-9]|1000$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9]?[0-9]?[0-9]|1000$")) {
Width = 20
};
@@ -473,12 +468,10 @@ namespace Terminal.Gui.Views {
public void End_Key_End_Of_Input ()
{
// Exactly 5 numbers
- var field = new TextValidateField ("^[0-9]{5}$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9]{5}$") { ValidateOnInput = false }) {
Width = 20
};
- field.Provider.ValidateOnInput = false;
-
for (int i = 0; i < 4; i++) {
field.ProcessKey (new KeyEvent (Key.D0, new KeyModifiers { }));
}
@@ -508,11 +501,10 @@ namespace Terminal.Gui.Views {
[Fact]
public void Right_Key_Stops_At_End_And_Insert ()
{
- var field = new TextValidateField ("^[0-9][0-9][0-9]$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9][0-9][0-9]$") { ValidateOnInput = false }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
- field.Provider.ValidateOnInput = false;
field.Text = "123";
@@ -533,11 +525,10 @@ namespace Terminal.Gui.Views {
[Fact]
public void Left_Key_Stops_At_Start_And_Insert ()
{
- var field = new TextValidateField ("^[0-9][0-9][0-9]$") {
+ var field = new TextValidateField (new TextRegexProvider ("^[0-9][0-9][0-9]$") { ValidateOnInput = false }) {
TextAlignment = TextAlignment.Centered,
Width = 20
};
- field.Provider.ValidateOnInput = false;
field.Text = "123";