############################################## # $Id$ package main; use strict; use warnings; my @events; my @logs; sub FhemTestUtils_gotLog($); sub FhemTestUtils_resetLogs(); sub FhemTestUtils_gotEvent($); sub FhemTestUtils_resetEvents(); sub FhemTestUtils_Initialize($) { my ($hash) = @_; $hash->{DefFn} = "FhemTestUtils_Define"; $hash->{NotifyFn} = "FhemTestUtils_Notify"; } sub FhemTestUtils_Define($$) { my ($hash, $def) = @_; my @a = split("[ \t][ \t]*", $def); return "Wrong syntax: use define FhemTestUtils" if(int(@a) != 2); $logInform{$a[0]} = sub() { push @logs, $_[1] }; return undef; } sub FhemTestUtils_Notify($$) { my ($ntfy, $dev) = @_; my $events = deviceEvents($dev, 0); my $n = $dev->{NAME}; #map { print "$n:$_\n" } @{$events}; return if(!$events); # Some previous notify deleted the array. push @events, map { "$n:$_" } @{$events}; return undef; } sub FhemTestUtils_gotEvent($) { my ($arg) = @_; return grep /$arg/,@events; } sub FhemTestUtils_resetEvents() { @events=(); } sub FhemTestUtils_gotLog($) { my ($arg) = @_; return grep /$arg/,@logs; } sub FhemTestUtils_resetLogs() { @logs=(); } sub FhemTestUtils_getLogTime { my $arg = shift; foreach my $line (@logs) { if($line =~ m/^([0-9\.]+ [0-9:\.]+)\s.*$arg/ms) { my @a = split("[\. :]", $1); my $time = mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1); $time += $a[6]/1000 if(@a == 7); # attrg global mseclog is active return $time; } } return; } 1; =pod =item helper =item summary Utility functions for testing FHEM modules =item summary_DE Hilfsfunktionen, um FHEM Module zu testen =begin html

FhemTestUtils

=end html =cut