123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- unit utcnotifications;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, fpcunit, testutils, testregistry, system.notification;
- type
- { TTestNotification }
- TTestNotification= class(TTestCase)
- private
- FCenter: TNotificationCenter;
- FChannel: TChannel;
- FChannels: TChannels;
- FNotification: TNotification;
- FSender : TObject;
- FNotifiedNotification : TNotification;
- FNotificationName : String;
- FNotifyChannels: TChannels;
- FNotifyChannel: TChannel;
- FNumber : Integer;
- procedure DoCancelByname(Sender: TObject; aName: String);
- procedure DoChannelEvent(Sender: TObject; aChannel: TChannel);
- procedure DoGetChannels(Sender: TObject; aChannels: TChannels);
- procedure DoNamedChannelEvent(Sender: TObject; aName: String);
- procedure DoNotifiy(Sender: TObject);
- procedure DoGetIconNumber(Sender: TObject; var aNumber: Integer);
- procedure DoNotifyNotification(Sender: TObject; aNotification: TNotification);
- procedure DoSetBadgeNumber(Sender: TObject; const aNumber: Integer);
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- property Notification : TNotification Read FNotification;
- Property Center : TNotificationCenter Read FCenter;
- Property Channels : TChannels Read FChannels;
- Property Channel : TChannel Read FChannel;
- published
- procedure TestHookUp;
- procedure TestAssign;
- procedure TestAssignChannel;
- procedure TestGetIconBadgeCount;
- procedure TestSetIconBadgeCount;
- procedure TestRequestPermission;
- procedure TestResetIconBadgeNumber;
- Procedure TestAuthorizationStatus;
- procedure TestCancelAll;
- procedure TestCancelByName;
- procedure TestGetAllChannels;
- procedure TestCreateChannel;
- procedure TestDeleteChannel;
- Procedure TestPresentNotification;
- Procedure TestScheduleNotification;
- end;
- implementation
- procedure TTestNotification.TestHookUp;
- begin
- AssertNotNull('Default',TEventedNotificationCenter.Instance);
- AssertNotNull('Center',Center);
- AssertNull('Sender',FSender);
- AssertNotNull('Channels',FChannels);
- AssertNotNull('Channel',FChannel);
- AssertTrue('TeventedNotificationCenter.Instance.OnGetIconBadgeNumber',TeventedNotificationCenter.Instance.OnGetIconBadgeNumber=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnCancelAllNotifications',TeventedNotificationCenter.Instance.OnCancelAllNotifications=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnCancelNotificationByName',TeventedNotificationCenter.Instance.OnCancelNotificationByName=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnGetChannels',TeventedNotificationCenter.Instance.OnGetChannels=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnCreateChannel',TeventedNotificationCenter.Instance.OnCreateChannel=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnDeleteChannel',TeventedNotificationCenter.Instance.OnDeleteChannel=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnPresentNotification',TeventedNotificationCenter.Instance.OnPresentNotification=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnScheduleNotification',TeventedNotificationCenter.Instance.OnScheduleNotification=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnRequestPermission',TeventedNotificationCenter.Instance.OnRequestPermission=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnResetIconBadgeNumber',TeventedNotificationCenter.Instance.OnResetIconBadgeNumber=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnCancelNotification',TeventedNotificationCenter.Instance.OnCancelNotification=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.OnSetIconBadgeNumber',TeventedNotificationCenter.Instance.OnSetIconBadgeNumber=Nil);
- AssertTrue('TeventedNotificationCenter.Instance.AuthorizationStatus',TAuthorizationStatus.NotDetermined=TeventedNotificationCenter.Instance.AuthorizationStatus);
- end;
- procedure TTestNotification.TestAssign;
- var
- N : TNotification;
- begin
- With Notification do
- begin
- Name:='x';
- Title:='y';
- AlertBody:='z';
- AlertAction:='q';
- Number:=134;
- FireDate:=Date+1;
- EnableSound:=True;
- SoundName:='bigben';
- HasAction:=True;
- RepeatInterval:=TRepeatInterval.Year;
- ChannelId:='c4';
- end;
- N:=TEventedNotificationCenter.Instance.CreateNotification;
- try
- N.Assign(Notification);
- AssertEquals('Name',Notification.Name,N.Name);
- AssertEquals('Title',Notification.Title,N.Title);
- AssertEquals('AlertBody',Notification.AlertBody,N.AlertBody);
- AssertEquals('AlertAction',Notification.AlertAction,N.AlertAction);
- AssertEquals('Number',Notification.Number,N.Number);
- AssertEquals('Firedate',Notification.FireDate,N.FireDate);
- AssertEquals('EnableSound',Notification.EnableSound,N.EnableSOund);
- AssertEquals('SoundName',Notification.SoundName,N.SoundName);
- AssertEquals('HasAction',Notification.HasAction,N.HasAction);
- AssertTrue('RepeatInterval',Notification.RepeatInterval=N.RepeatInterval);
- AssertEquals('ChannelId',Notification.ChannelId,N.ChannelId);
- finally
- N.Free;
- end;
- end;
- procedure TTestNotification.TestAssignChannel;
- begin
- end;
- procedure TTestNotification.TestGetIconBadgeCount;
- begin
- TeventedNotificationCenter.Instance.OnGetIconBadgeNumber:=@DoGetIconNumber;
- AssertEquals('Correct number',12,FCenter.ApplicationIconBadgeNumber);
- end;
- procedure TTestNotification.TestSetIconBadgeCount;
- begin
- TeventedNotificationCenter.Instance.OnSetIconBadgeNumber:=@DoSetBadgeNumber;
- Center.ApplicationIconBadgeNumber:=16;
- AssertNotNull('Called',FSender);
- AssertEquals('Number',16,FNumber);
- end;
- procedure TTestNotification.TestRequestPermission;
- begin
- TEventedNotificationCenter.Instance.OnRequestPermission:=@DoNotifiy;
- Center.RequestPermission;
- AssertNotNull('Called',FSender);
- end;
- procedure TTestNotification.TestResetIconBadgeNumber;
- begin
- TeventedNotificationCenter.Instance.OnResetIconBadgeNumber:=@DoNotifiy;
- Center.ResetIconBadgeNumber;
- AssertNotNull('Called',FSender);
- end;
- procedure TTestNotification.TestAuthorizationStatus;
- begin
- TeventedNotificationCenter.Instance.AuthorizationStatus:=TAuthorizationStatus.NotDetermined;
- AssertTrue('Correct',TAuthorizationStatus.NotDetermined=Center.AuthorizationStatus);
- end;
- procedure TTestNotification.TestCancelAll;
- begin
- TeventedNotificationCenter.Instance.OnCancelAllNotifications:=@DoNotifiy;
- Center.CancelAll;
- AssertNotNull('Called',FSender);
- end;
- procedure TTestNotification.TestCancelByName;
- begin
- TeventedNotificationCenter.Instance.OnCancelNotificationByName:=@DoCancelByname;
- Center.CancelNotification('Name');
- AssertNotNull('Called',FSender);
- AssertEquals('Name','Name',FNotificationName);
- end;
- procedure TTestNotification.TestGetAllChannels;
- begin
- TeventedNotificationCenter.Instance.OnGetChannels:=@DoGetChannels;
- Center.GetAllChannels(Channels);
- AssertNotNull('Called',FSender);
- AssertSame('Channels',Channels,FNotifyChannels);
- end;
- procedure TTestNotification.TestCreateChannel;
- begin
- TeventedNotificationCenter.Instance.OnCreateChannel:=@DoChannelEvent;
- Center.CreateOrUpdateChannel(Channel);
- AssertNotNull('Called',FSender);
- AssertSame('Channel',Channel,FNotifyChannel);
- end;
- procedure TTestNotification.TestDeleteChannel;
- begin
- TeventedNotificationCenter.Instance.OnDeleteChannel:=@DoNamedChannelEvent;
- Center.DeleteChannel('Name');
- AssertNotNull('Called',FSender);
- AssertEquals('Name','Name',FNotificationName);
- end;
- procedure TTestNotification.TestPresentNotification;
- begin
- TeventedNotificationCenter.Instance.OnPresentNotification:=@DoNotifyNotification;
- Center.PresentNotification(Notification);
- AssertNotNull('Called',FSender);
- AssertSame('Notification',Notification,FNotifiedNotification);
- end;
- procedure TTestNotification.TestScheduleNotification;
- begin
- TeventedNotificationCenter.Instance.OnScheduleNotification:=@DoNotifyNotification;
- Center.ScheduleNotification(Notification);
- AssertNotNull('Called',FSender);
- AssertSame('Notification',Notification,FNotifiedNotification);
- end;
- procedure TTestNotification.DoNotifiy(Sender: TObject);
- begin
- FSender:=Sender;
- end;
- procedure TTestNotification.DoCancelByname(Sender: TObject; aName: String);
- begin
- FNotificationName:=aName;
- FSender:=Sender;
- end;
- procedure TTestNotification.DoChannelEvent(Sender: TObject; aChannel: TChannel);
- begin
- FSender:=Sender;
- FNotifyChannel:=aChannel
- end;
- procedure TTestNotification.DoGetChannels(Sender: TObject; aChannels: TChannels);
- begin
- FSender:=Sender;
- FNotifyChannels:=aChannels;
- end;
- procedure TTestNotification.DoNamedChannelEvent(Sender: TObject; aName: String);
- begin
- FSender:=Sender;
- FNotificationName:=aName;
- end;
- procedure TTestNotification.DoNotifyNotification(Sender: TObject; aNotification: TNotification);
- begin
- FSender:=Sender;
- FNotifiedNotification:=aNotification;
- end;
- procedure TTestNotification.DoSetBadgeNumber(Sender: TObject; const aNumber: Integer);
- begin
- FSender:=Sender;
- FNumber:=aNumber;
- end;
- procedure TTestNotification.DoGetIconNumber(Sender: TObject; var aNumber: Integer);
- begin
- aNumber:=12;
- end;
- procedure TTestNotification.SetUp;
- begin
- FNotification:=TEventedNotificationCenter.Instance.CreateNotification;
- FCenter:=TNotificationCenter.Create(Nil);
- FSender:=nil;
- FChannels:=TChannels.Create();
- FChannel:=TChannel.Create;
- FNotifiedNotification:=Nil;
- FNotificationName:='';
- FNotifyChannels:=Nil;
- FNumber:=0;
- TeventedNotificationCenter.Instance.OnGetIconBadgeNumber:=Nil;
- TeventedNotificationCenter.Instance.OnCancelAllNotifications:=Nil;
- TeventedNotificationCenter.Instance.OnCancelNotificationByName:=Nil;
- TeventedNotificationCenter.Instance.OnGetChannels:=Nil;
- TeventedNotificationCenter.Instance.OnCreateChannel:=Nil;
- TeventedNotificationCenter.Instance.OnDeleteChannel:=Nil;
- TeventedNotificationCenter.Instance.OnPresentNotification:=Nil;
- TeventedNotificationCenter.Instance.OnScheduleNotification:=Nil;
- TeventedNotificationCenter.Instance.OnRequestPermission:=Nil;
- TeventedNotificationCenter.Instance.OnResetIconBadgeNumber:=Nil;
- TeventedNotificationCenter.Instance.OnCancelNotification:=Nil;
- TeventedNotificationCenter.Instance.OnSetIconBadgeNumber:=Nil;
- TeventedNotificationCenter.Instance.AuthorizationStatus:=TAuthorizationStatus.NotDetermined;
- end;
- procedure TTestNotification.TearDown;
- begin
- FreeAndNil(FChannels);
- FreeAndNil(FChannel);
- FreeAndNil(FNotification);
- FreeAndNil(FCenter);
- FSender:=nil;
- end;
- initialization
- RegisterTest(TTestNotification);
- end.
|