Skip to content

Commit

Permalink
#16
Browse files Browse the repository at this point in the history
  • Loading branch information
syberside committed Jan 19, 2019
1 parent ba49b74 commit a6c0cd2
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 53 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -17,7 +17,7 @@ This project is inspired by .NET [Autofixture](https://github.com/AutoFixture/Au
- Arrays generating with customizable size: it is effortless for primitive types and require explicit registration for enums and complex types.
- Support of recursive graphs (trees, linked lists and etc) with customizable recursion level.
- Generic class instances generating with explicit factory registration.
- Customization of ctor resolution: random, first, random named, factory, default.
- Customization of ctor resolution: first defined, random, random named, random default.

## Roadmap
This is my first Dart project and, actually, this is "pet-project". So there are no exact plans and etc.
Expand Down
5 changes: 1 addition & 4 deletions lib/src/backends_factory.dart
Expand Up @@ -106,9 +106,6 @@ class BackendsFactory {
if(name != _emptySymbol){
return CtorType.Named;
}
if(method.isGenerativeConstructor){
return CtorType.Default;
}
return CtorType.Factory;
return CtorType.Default;
}
}
1 change: 0 additions & 1 deletion lib/src/ctor_info.dart
Expand Up @@ -18,6 +18,5 @@ class CtorInfo {

enum CtorType{
Default,
Factory,
Named
}
2 changes: 1 addition & 1 deletion lib/src/customization/backend_resolution_strategy.dart
@@ -1 +1 @@
enum BackendResolutionStrategy { TakeFirstDefined, TakeRandomNamedCtor, TakeRandom, TakeDefaultCtor, TakeFactory }
enum BackendResolutionStrategy { TakeFirstDefined, TakeRandomNamedCtor, TakeRandom, TakeDefaultCtor}
3 changes: 0 additions & 3 deletions lib/src/customization/backend_resolver_factory.dart
Expand Up @@ -3,7 +3,6 @@ import 'dart:math';
import 'package:activatory/src/customization/backend_resolution_strategy.dart';
import 'package:activatory/src/customization/backend_resolver.dart';
import 'package:activatory/src/customization/default_ctor_resolver.dart';
import 'package:activatory/src/customization/factory_ctor_resolver.dart';
import 'package:activatory/src/customization/first_ctor_resolve_strategy.dart';
import 'package:activatory/src/customization/random_named_ctor_resolver.dart';
import 'package:activatory/src/customization/random_resolver.dart';
Expand Down Expand Up @@ -33,8 +32,6 @@ class BackendResolverFactory {
return new RandomResolver(_random);
case BackendResolutionStrategy.TakeDefaultCtor:
return new DefaultCtorResolver();
case BackendResolutionStrategy.TakeFactory:
return new FactoryCtorResolver();
default:
throw ArgumentError.value(strategy);
}
Expand Down
18 changes: 0 additions & 18 deletions lib/src/customization/factory_ctor_resolver.dart

This file was deleted.

2 changes: 1 addition & 1 deletion pubspec.yaml
@@ -1,6 +1,6 @@
name: activatory
description: Test data generator aimed to simplify Test-Driven Development with Dart
version: 0.0.14
version: 0.0.15
homepage: https://github.com/syberside/Activatory
author: syberside

Expand Down
38 changes: 25 additions & 13 deletions test/activatory_test.dart
Expand Up @@ -457,57 +457,69 @@ void main() {
group('Can customize', (){
group('ctors',(){
test('take first',(){
_activatory.customize<ManyNamedCtors>()
_activatory.customize<NamedCtorsAndDefaultCtor>()
.resolutionStrategy = BackendResolutionStrategy.TakeFirstDefined;

var items = List.generate(15, (_)=>_activatory.getTyped<ManyNamedCtors>());
var items = List.generate(15, (_)=>_activatory.getTyped<NamedCtorsAndDefaultCtor>());
var result = SplayTreeSet.from(items.map((item)=>item.field));

var expected = ['A'];
expect(result, equals(expected));
});

test('take random named',(){
_activatory.customize<ManyNamedCtors>()
_activatory.customize<NamedCtorsAndDefaultCtor>()
.resolutionStrategy = BackendResolutionStrategy.TakeRandomNamedCtor;

var items = List.generate(15, (_)=>_activatory.getTyped<ManyNamedCtors>());
var items = List.generate(15, (_)=>_activatory.getTyped<NamedCtorsAndDefaultCtor>());
var result = SplayTreeSet.from(items.map((item)=>item.field));

var expected = ['A', 'B', 'C', 'D'];
expect(result, equals(expected));
});

test('take random',(){
_activatory.customize<ManyNamedCtors>()
_activatory.customize<NamedCtorsAndDefaultCtor>()
.resolutionStrategy = BackendResolutionStrategy.TakeRandom;
_activatory.pinValue<String>('E');

var items = List.generate(200, (_)=>_activatory.getTyped<ManyNamedCtors>());
var items = List.generate(200, (_)=>_activatory.getTyped<NamedCtorsAndDefaultCtor>());
var result = SplayTreeSet.from(items.map((item)=>item.field));

var expected = ['A', 'B', 'C', 'D', 'E'];
expect(result, equals(expected));
});

test('take default ctor', (){
_activatory.customize<ManyNamedCtors>()
test('take default ctor for class with default ctor', (){
_activatory.customize<NamedCtorsAndDefaultCtor>()
.resolutionStrategy = BackendResolutionStrategy.TakeDefaultCtor;
_activatory.pinValue<String>('E');

var items = List.generate(15, (_)=>_activatory.getTyped<ManyNamedCtors>());
var items = List.generate(15, (_)=>_activatory.getTyped<NamedCtorsAndDefaultCtor>());
var result = SplayTreeSet.from(items.map((item)=>item.field));

var expected = ['E'];
expect(result, equals(expected));
});

test('take factory',(){
_activatory.customize<ManyNamedCtorsWithFactory>()
.resolutionStrategy = BackendResolutionStrategy.TakeFactory;
test('take default for class with factory',(){
_activatory.customize<NamedCtorsAndFactory>()
.resolutionStrategy = BackendResolutionStrategy.TakeDefaultCtor;
_activatory.pinValue<String>('E');

var items = List.generate(15, (_)=>_activatory.getTyped<NamedCtorsAndFactory>());
var result = SplayTreeSet.from(items.map((item)=>item.field));

var expected = ['E'];
expect(result, equals(expected));
});

test('take default for class with const ctor',(){
_activatory.customize<NamedCtorsAndConstCtor>()
.resolutionStrategy=BackendResolutionStrategy.TakeDefaultCtor;
_activatory.pinValue<String>('E');

var items = List.generate(15, (_)=>_activatory.getTyped<ManyNamedCtorsWithFactory>());
var items = List.generate(15, (_)=>_activatory.getTyped<NamedCtorsAndConstCtor>());
var result = SplayTreeSet.from(items.map((item)=>item.field));

var expected = ['E'];
Expand Down
34 changes: 23 additions & 11 deletions test/test-classes.dart
Expand Up @@ -188,34 +188,46 @@ class GenericParams<T> extends Params<Generic<T>>{
}
}

class ManyNamedCtors{
class NamedCtorsAndDefaultCtor{
final String _field;
String get field => _field;

ManyNamedCtors.createA():this("A");
NamedCtorsAndDefaultCtor.createA():this("A");

ManyNamedCtors(this._field);
NamedCtorsAndDefaultCtor(this._field);

ManyNamedCtors.createB():this("B");
NamedCtorsAndDefaultCtor.createB():this("B");

ManyNamedCtors.createC():this("C");
NamedCtorsAndDefaultCtor.createC():this("C");

ManyNamedCtors.createD():this("D");
NamedCtorsAndDefaultCtor.createD():this("D");
}

class ManyNamedCtorsWithFactory{
class NamedCtorsAndFactory{
String _field;
String get field => _field;

ManyNamedCtorsWithFactory.createA(){
NamedCtorsAndFactory.createA(){
_field = "A";
}

ManyNamedCtorsWithFactory._internal(String arg){
NamedCtorsAndFactory._internal(String arg){
_field = arg;
}

factory ManyNamedCtorsWithFactory(String arg){
return ManyNamedCtorsWithFactory._internal(arg);
factory NamedCtorsAndFactory(String arg){
return NamedCtorsAndFactory._internal(arg);
}
}

class NamedCtorsAndConstCtor{
final String _field;
String get field => _field;

NamedCtorsAndConstCtor.A():this('A');

const NamedCtorsAndConstCtor(this._field);

NamedCtorsAndConstCtor.B():this('B');
NamedCtorsAndConstCtor.C():this('C');
}

0 comments on commit a6c0cd2

Please sign in to comment.