5 changed files with 204 additions and 5 deletions
			
			
		@ -0,0 +1,12 @@
					 | 
				
			||||
import 'package:neon/src/platform/platform.dart'; | 
				
			||||
import 'package:test/test.dart'; | 
				
			||||
 | 
				
			||||
void main() { | 
				
			||||
  test('NeonPlatform', () async { | 
				
			||||
    expect(() => NeonPlatform.instance, throwsA(isA<StateError>())); | 
				
			||||
 | 
				
			||||
    await NeonPlatform.setup(); | 
				
			||||
 | 
				
			||||
    expect(NeonPlatform.instance, isA<NeonPlatform>()); | 
				
			||||
  }); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,73 @@
					 | 
				
			||||
// ignore_for_file: unreachable_from_main | 
				
			||||
 | 
				
			||||
import 'dart:async'; | 
				
			||||
 | 
				
			||||
import 'package:mocktail/mocktail.dart'; | 
				
			||||
import 'package:neon/src/utils/stream_listenable.dart'; | 
				
			||||
import 'package:rxdart/rxdart.dart'; | 
				
			||||
import 'package:test/test.dart'; | 
				
			||||
 | 
				
			||||
class MockCallbackFunction extends Mock { | 
				
			||||
  FutureOr<void> call(); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void main() { | 
				
			||||
  group('StreamListenable', () { | 
				
			||||
    test('stream', () async { | 
				
			||||
      final stream = BehaviorSubject<bool>(); | 
				
			||||
      final callback = MockCallbackFunction(); | 
				
			||||
 | 
				
			||||
      StreamListenable(stream).addListener(callback.call); | 
				
			||||
 | 
				
			||||
      verifyNever(callback.call); | 
				
			||||
 | 
				
			||||
      stream.value = true; | 
				
			||||
      await Future.delayed(const Duration(milliseconds: 100)); | 
				
			||||
      verify(callback.call).called(1); | 
				
			||||
 | 
				
			||||
      stream.value = true; | 
				
			||||
      await Future.delayed(const Duration(milliseconds: 100)); | 
				
			||||
      verify(callback.call).called(1); | 
				
			||||
 | 
				
			||||
      unawaited(stream.close()); | 
				
			||||
    }); | 
				
			||||
 | 
				
			||||
    test('multiStream', () async { | 
				
			||||
      final stream = BehaviorSubject<bool>(); | 
				
			||||
      final stream2 = BehaviorSubject<int>(); | 
				
			||||
      final callback = MockCallbackFunction(); | 
				
			||||
 | 
				
			||||
      StreamListenable.multiListenable({ | 
				
			||||
        stream, | 
				
			||||
        stream2, | 
				
			||||
      }).addListener(callback.call); | 
				
			||||
 | 
				
			||||
      verifyNever(callback.call); | 
				
			||||
 | 
				
			||||
      stream.value = true; | 
				
			||||
      await Future.delayed(const Duration(milliseconds: 100)); | 
				
			||||
      verify(callback.call).called(1); | 
				
			||||
 | 
				
			||||
      stream2.value = 3; | 
				
			||||
      await Future.delayed(const Duration(milliseconds: 100)); | 
				
			||||
      verify(callback.call).called(1); | 
				
			||||
 | 
				
			||||
      unawaited(stream.close()); | 
				
			||||
      unawaited(stream2.close()); | 
				
			||||
    }); | 
				
			||||
 | 
				
			||||
    test('dispose', () { | 
				
			||||
      final controller = StreamController(); | 
				
			||||
 | 
				
			||||
      final listenable = StreamListenable(controller.stream); | 
				
			||||
 | 
				
			||||
      expect(controller.hasListener, true); | 
				
			||||
 | 
				
			||||
      // ignore: cascade_invocations | 
				
			||||
      listenable.dispose(); | 
				
			||||
 | 
				
			||||
      expect(controller.isClosed, false); | 
				
			||||
      unawaited(controller.close()); | 
				
			||||
    }); | 
				
			||||
  }); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,17 @@
					 | 
				
			||||
import 'package:neon/src/utils/user_agent.dart'; | 
				
			||||
import 'package:package_info_plus/package_info_plus.dart'; | 
				
			||||
import 'package:test/test.dart'; | 
				
			||||
 | 
				
			||||
void main() { | 
				
			||||
  test('UserAgent', () { | 
				
			||||
    final packageInfo = PackageInfo( | 
				
			||||
      appName: 'appName', | 
				
			||||
      packageName: 'packageName', | 
				
			||||
      version: 'version', | 
				
			||||
      buildNumber: 'buildNumber', | 
				
			||||
    ); | 
				
			||||
    buildUserAgent(packageInfo); | 
				
			||||
 | 
				
			||||
    expect(neonUserAgent, 'Neon version+buildNumber'); | 
				
			||||
  }); | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue