137 строки
2.8 KiB
C#
137 строки
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Input;
|
|
using NUnit.Framework;
|
|
|
|
namespace Xamarin.Forms.Core.UnitTests
|
|
{
|
|
[TestFixture]
|
|
public class SearchBarUnitTests : BaseTestFixture
|
|
{
|
|
[Test]
|
|
public void TestConstructor()
|
|
{
|
|
SearchBar searchBar = new SearchBar();
|
|
|
|
Assert.Null(searchBar.Placeholder);
|
|
Assert.Null(searchBar.Text);
|
|
}
|
|
|
|
[Test]
|
|
public void TestContentsChanged()
|
|
{
|
|
SearchBar searchBar = new SearchBar();
|
|
|
|
bool thrown = false;
|
|
|
|
searchBar.TextChanged += (sender, e) => thrown = true;
|
|
|
|
searchBar.Text = "Foo";
|
|
|
|
Assert.True(thrown);
|
|
}
|
|
|
|
[Test]
|
|
public void TestSearchButtonPressed()
|
|
{
|
|
SearchBar searchBar = new SearchBar();
|
|
|
|
bool thrown = false;
|
|
searchBar.SearchButtonPressed += (sender, e) => thrown = true;
|
|
|
|
((ISearchBarController)searchBar).OnSearchButtonPressed();
|
|
|
|
Assert.True(thrown);
|
|
}
|
|
|
|
[Test]
|
|
public void TestSearchCommandParameter()
|
|
{
|
|
var searchBar = new SearchBar();
|
|
|
|
object param = "Testing";
|
|
object result = null;
|
|
searchBar.SearchCommand = new Command(p => { result = p; });
|
|
searchBar.SearchCommandParameter = param;
|
|
|
|
((ISearchBarController)searchBar).OnSearchButtonPressed();
|
|
|
|
Assert.AreEqual(param, result);
|
|
}
|
|
|
|
[TestCase(null, "Text Changed")]
|
|
[TestCase("Initial Text", null)]
|
|
[TestCase("Initial Text", "Text Changed")]
|
|
public void SearchBarTextChangedEventArgs(string initialText, string finalText)
|
|
{
|
|
var searchBar = new SearchBar
|
|
{
|
|
Text = initialText
|
|
};
|
|
|
|
SearchBar searchBarFromSender = null;
|
|
string oldText = null;
|
|
string newText = null;
|
|
|
|
searchBar.TextChanged += (s, e) =>
|
|
{
|
|
searchBarFromSender = (SearchBar)s;
|
|
oldText = e.OldTextValue;
|
|
newText = e.NewTextValue;
|
|
};
|
|
|
|
searchBar.Text = finalText;
|
|
|
|
Assert.AreEqual(searchBar, searchBarFromSender);
|
|
Assert.AreEqual(initialText, oldText);
|
|
Assert.AreEqual(finalText, newText);
|
|
}
|
|
|
|
[Test]
|
|
public void CommandCanExecuteUpdatesEnabled()
|
|
{
|
|
var searchBar = new SearchBar();
|
|
|
|
bool result = false;
|
|
|
|
var bindingContext = new
|
|
{
|
|
Command = new Command(() => { }, () => result)
|
|
};
|
|
|
|
searchBar.SetBinding(SearchBar.SearchCommandProperty, "Command");
|
|
searchBar.BindingContext = bindingContext;
|
|
|
|
Assert.False(searchBar.IsEnabled);
|
|
|
|
result = true;
|
|
|
|
bindingContext.Command.ChangeCanExecute();
|
|
|
|
Assert.True(searchBar.IsEnabled);
|
|
}
|
|
|
|
class MyCommand : ICommand
|
|
{
|
|
public bool CanExecute(object parameter)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public void Execute(object parameter)
|
|
{
|
|
}
|
|
|
|
public event EventHandler CanExecuteChanged;
|
|
}
|
|
|
|
[Test]
|
|
public void DoesNotCrashWithNonCommandICommand()
|
|
{
|
|
var searchBar = new SearchBar();
|
|
Assert.DoesNotThrow(() => searchBar.SearchCommand = new MyCommand());
|
|
}
|
|
}
|
|
}
|