public class RadioTests
{
private Radio _radio;
+ protected Button _button1;
+ protected Button _button2;
+ protected Button _button3;
+ protected Label _label;
private bool _isRadioSupported = true;
+ private bool _isRadioStarted;
[SetUp]
public void SetUp()
public void TearDown()
{
_radio?.Dispose();
+ _button1 = _button2 = _button3 = null;
+ _label = null;
+ _isRadioStarted = false;
}
private void OnStartClicked(object sender, EventArgs e)
{
- _radio.Start();
+ if (!_isRadioStarted)
+ {
+ _radio.Start();
+ _isRadioStarted = true;
+ }
}
private void OnStopClicked(object sender, EventArgs e)
{
- _radio.Stop();
+ if (_isRadioStarted)
+ {
+ _radio.Stop();
+ _isRadioStarted = false;
+ }
}
- private Label CreateLabel()
+ private async void OnSeekUpClicked(object sender, EventArgs e)
{
- return new Label()
+ if (_isRadioStarted)
{
- HorizontalTextAlignment = TextAlignment.Center,
- HorizontalOptions = LayoutOptions.FillAndExpand,
- VerticalOptions = LayoutOptions.CenterAndExpand,
- MinimumWidthRequest = 160,
- MinimumHeightRequest = 80
- };
+ var btn = sender as Button;
+
+ btn.IsEnabled = false;
+ _label.Text = "Frequency : " + await _radio.SeekUpAsync();
+ btn.IsEnabled = true;
+ }
}
- private Button CreateButton(string text, EventHandler clickHandler)
+ private async void OnSeekDownClicked(object sender, EventArgs e)
{
- var btn = new Button()
+ if (_isRadioStarted)
{
- Text = text,
- HorizontalOptions = LayoutOptions.FillAndExpand,
- VerticalOptions = LayoutOptions.CenterAndExpand,
- MinimumWidthRequest = 160,
- MinimumHeightRequest = 45,
- };
-
- btn.Clicked += clickHandler;
- return btn;
+ var btn = sender as Button;
+
+ btn.IsEnabled = false;
+ _label.Text = "Frequency : " + await _radio.SeekDownAsync();
+ btn.IsEnabled = true;
+ }
}
- private void PrepareLayout(params View[] views)
+ private async void OnScanClicked(object sender, EventArgs e)
{
- var layout = new StackLayout()
+ var btn = sender as Button;
+ var frequencies = new List<int>();
+ var tcs = new TaskCompletionSource<bool>();
+
+ btn.IsEnabled = false;
+
+ _radio.ScanUpdated += (_, args) => frequencies.Add(args.Frequency);
+ _radio.ScanCompleted += (_, args) => tcs.TrySetResult(true);
+ _radio.StartScan();
+
+ await Task.WhenAny(tcs.Task, Task.Delay(10000));
+
+ if (tcs.Task.IsCompleted)
{
- HorizontalOptions = LayoutOptions.FillAndExpand,
- VerticalOptions = LayoutOptions.Start,
- Orientation = StackOrientation.Horizontal,
- MinimumHeightRequest = 120,
- Padding = new Thickness()
- {
- Top = 0,
- },
- };
+ btn.IsEnabled = true;
- foreach (var v in views)
+ _label.Text = "Frequencies = " + string.Join(",", frequencies);
+ }
+ }
+
+ private void OnMuteClicked(object sender, EventArgs e)
+ {
+ if (_isRadioStarted)
{
- layout.Children.Add(v);
+ var btn = sender as Button;
+
+ if (_radio.IsMuted == false)
+ {
+ _radio.IsMuted = true;
+ btn.Text = "Unmute";
+ }
+ else
+ {
+ _radio.IsMuted = false;
+ btn.Text = "Mute";
+ }
}
+ }
+
+ private async Task CreateButton(string str1, string str2 = "", string str3 = "")
+ {
+ var tcs = new TaskCompletionSource<bool>();
+
+ Device.BeginInvokeOnMainThread(() =>
+ {
+ _button1 = new Button()
+ {
+ Text = str1,
+ HorizontalOptions = LayoutOptions.FillAndExpand,
+ VerticalOptions = LayoutOptions.CenterAndExpand,
+ MinimumWidthRequest = 210,
+ MinimumHeightRequest = 45
+ };
+ _button2 = new Button()
+ {
+ Text = str2,
+ HorizontalOptions = LayoutOptions.FillAndExpand,
+ VerticalOptions = LayoutOptions.CenterAndExpand,
+ MinimumWidthRequest = 210,
+ MinimumHeightRequest = 45
+ };
+ _button3 = new Button()
+ {
+ Text = str3,
+ HorizontalOptions = LayoutOptions.FillAndExpand,
+ VerticalOptions = LayoutOptions.CenterAndExpand,
+ MinimumWidthRequest = 210,
+ MinimumHeightRequest = 45
+ };
+ _label = new Label()
+ {
+ Text = "",
+ HorizontalOptions = LayoutOptions.FillAndExpand,
+ VerticalOptions = LayoutOptions.Start,
+ MinimumHeightRequest = 50,
+ TextColor = Color.Black
+ };
+
+ var layout = new StackLayout()
+ {
+ HorizontalOptions = LayoutOptions.FillAndExpand,
+ VerticalOptions = LayoutOptions.CenterAndExpand,
+ Orientation = StackOrientation.Horizontal,
+ Children = {
+ _button1,
+ _button2,
+ _button3,
+ },
+ };
+
+ var mainLayout = new StackLayout()
+ {
+ HorizontalOptions = LayoutOptions.FillAndExpand,
+ VerticalOptions = LayoutOptions.CenterAndExpand,
+ Orientation = StackOrientation.Vertical,
+ Children =
+ {
+ layout,
+ _label
+ }
+ };
+
+ if (str2.Length == 0)
+ {
+ _button2.IsVisible = false;
+ }
+ if (str3.Length == 0)
+ {
+ _button3.IsVisible = false;
+ }
+
+ TestPage.GetInstance().ExecuteTC(mainLayout);
+
+ tcs.SetResult(true);
+ });
- TestPage.GetInstance().ExecuteTC(layout);
+ await tcs.Task;
}
[Test]
return;
}
- PrepareLayout(CreateButton("Start", OnStartClicked),
- CreateButton("Stop", OnStopClicked));
+ await CreateButton("Start", "Stop");
+
+ _button1.Clicked += OnStartClicked;
+ _button2.Clicked += OnStopClicked;
await ManualTest.WaitForConfirm();
+
+ _button1.Clicked -= OnStartClicked;
+ _button2.Clicked -= OnStopClicked;
}
[Test]
return;
}
- PrepareLayout(CreateButton("Start", OnStartClicked),
- CreateButton("Stop", OnStopClicked));
+ await CreateButton("Start", "Stop");
+
+ _button1.Clicked += OnStartClicked;
+ _button2.Clicked += OnStopClicked;
await ManualTest.WaitForConfirm();
+
+ _button1.Clicked -= OnStartClicked;
+ _button2.Clicked -= OnStopClicked;
}
[Test]
return;
}
- var label = CreateLabel();
-
- var onSeekUpClicked = new EventHandler(async (s, e) =>
- {
- var btn = s as Button;
-
- btn.IsEnabled = false;
- label.Text = "Frequency : " + await _radio.SeekUpAsync();
- btn.IsEnabled = true;
- });
+ await CreateButton("Start", "Seek Up", "Stop");
- PrepareLayout(CreateButton("Start", OnStartClicked),
- CreateButton("Seek Up", onSeekUpClicked),
- CreateButton("Stop", OnStopClicked),
- label);
+ _button1.Clicked += OnStartClicked;
+ _button2.Clicked += OnSeekUpClicked;
+ _button3.Clicked += OnStopClicked;
await ManualTest.WaitForConfirm();
+
+ _button1.Clicked -= OnStartClicked;
+ _button2.Clicked -= OnSeekUpClicked;
+ _button3.Clicked -= OnStopClicked;
}
[Test]
return;
}
- var label = CreateLabel();
-
- var onSeekDownClicked = new EventHandler(async (s, e) =>
- {
- var btn = s as Button;
-
- btn.IsEnabled = false;
- label.Text = "Frequency : " + await _radio.SeekDownAsync();
- btn.IsEnabled = true;
- });
+ await CreateButton("Start", "Seek Down", "Stop");
- PrepareLayout(CreateButton("Start", OnStartClicked),
- CreateButton("Seek Down", onSeekDownClicked),
- CreateButton("Stop", OnStopClicked),
- label);
+ _button1.Clicked += OnStartClicked;
+ _button2.Clicked += OnSeekDownClicked;
+ _button3.Clicked += OnStopClicked;
await ManualTest.WaitForConfirm();
+
+ _button1.Clicked -= OnStartClicked;
+ _button2.Clicked -= OnSeekDownClicked;
+ _button3.Clicked -= OnStopClicked;
}
[Test]
return;
}
- var label = CreateLabel();
- label.LineBreakMode = LineBreakMode.WordWrap;
+ await CreateButton("Scan");
- var onScanClicked = new EventHandler(async (s, e) =>
- {
- var btn = s as Button;
- var frequencies = new List<int>();
- var tcs = new TaskCompletionSource<bool>();
+ _label.LineBreakMode = LineBreakMode.WordWrap;
- btn.IsEnabled = false;
-
- _radio.ScanUpdated += (_, args) => frequencies.Add(args.Frequency);
- _radio.ScanCompleted += (_, args) => tcs.TrySetResult(true);
- _radio.StartScan();
-
- await Task.WhenAny(tcs.Task, Task.Delay(10000));
-
- if (tcs.Task.IsCompleted)
- {
- btn.IsEnabled = true;
-
- label.Text = "Frequencies = " + string.Join(",", frequencies);
- }
- });
-
- PrepareLayout(CreateButton("Scan", onScanClicked), label);
+ _button1.Clicked += OnScanClicked;
await ManualTest.WaitForConfirm();
+
+ _button1.Clicked -= OnScanClicked;
}
[Test]
return;
}
- var onMuteClicked = new EventHandler((s, e) =>
- {
- var btn = s as Button;
+ await CreateButton("Start", "Mute", "Stop");
- if (_radio.IsMuted == false)
- {
- _radio.IsMuted = true;
- btn.Text = "Unmute";
- }
- else
- {
- _radio.IsMuted = false;
- btn.Text = "Mute";
- }
- });
-
- PrepareLayout(CreateButton("Start", OnStartClicked),
- CreateButton("Mute", onMuteClicked),
- CreateButton("Stop", OnStopClicked));
+ _button1.Clicked += OnStartClicked;
+ _button2.Clicked += OnMuteClicked;
+ _button3.Clicked += OnStopClicked;
await ManualTest.WaitForConfirm();
+
+ _button1.Clicked -= OnStartClicked;
+ _button2.Clicked -= OnMuteClicked;
+ _button3.Clicked -= OnStopClicked;
}
}
}