Skip to content

Commit

Permalink
GridGS refactored futher, now works.
Browse files Browse the repository at this point in the history
  • Loading branch information
vadimtsushko committed Mar 3, 2013
1 parent 0e3efac commit fb84a82
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 44 deletions.
38 changes: 7 additions & 31 deletions lib/src/gridfs/grid_out.dart
Expand Up @@ -8,42 +8,18 @@ class GridOut extends GridFSFile {
this.data = data;
}
}

Future<List<int>> getChunk(int i) {
if (fs == null) {
// TODO throw error
}
Completer completer = new Completer();
// TODO(tsander): Would it be better to ask for all the chunks instead of
// one at a time?
fs.chunks.findOne(where.eq("files_id", id).eq("n", i))
..catchError((e){
// TODO better error handling.
print(e);
})
..then((Map chunk) {
List<int> result = null;
if (chunk != null) {
BsonBinary data = chunk["data"];
result = data.byteList;
}
completer.complete(result);
});
return completer.future;
}

Future<int> writeToFilename(String filename) {
Future writeToFilename(String filename) {
return writeToFile(new File(filename));
}

Future<int> writeToFile(File file) {
IOSink out = file.openWrite(FileMode.WRITE);
Future<int> written = writeTo(out);
written.then((int length) {
out.close();
return new Future.immediate(length);
Future writeToFile(File file) {
var completer = new Completer();
var sink = file.openWrite(FileMode.WRITE);
writeTo(sink).then((int length) {
sink.close();
});
return written;
return sink.done;
}

Future<int> writeTo(IOSink out) {
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
@@ -1,5 +1,5 @@
name: mongo_dart
version: 0.1.2-dev
version: 0.1.2
authors:
- Vadim Tsushko <vadimtsushko@gmail.com>
- Ted Sander <ted@tedsander.com>
Expand Down
16 changes: 4 additions & 12 deletions test/gridfs_tests.dart
Expand Up @@ -125,14 +125,11 @@ testChunkTransformerSeveralChunks(){
}));
}

testWithFile() {
// var consumer = new MockConsumer();
// var sink = new IOSink(consumer);
testFileToGridFSToFile() {
GridFS.DEFAULT_CHUNKSIZE = 30;
GridIn input;
var path = new Path(new Options().script).directoryPath;
var inputStream = new File('$path/gridfs_testdata_in.txt').openRead();
var sink = new File('$path/gridfs_testdata_out.txt').openWrite(FileMode.WRITE);
Db db = new Db('${DefaultUri}mongo_dart-test');
db.open().then(expectAsync1((c){
var gridFS = new GridFS(db);
Expand All @@ -142,14 +139,9 @@ testWithFile() {
})).then(expectAsync1((c) {
var gridFS = new GridFS(db);
return gridFS.getFile('test');
})).then(expectAsync1((GridOut gridOut) {
return gridOut.writeTo(sink);
// return gridOut.writeToFilename('$path/gridfs_testdata_out.txt');
})).then(expectAsync1((GridOut gridOut) {
return gridOut.writeToFilename('$path/gridfs_testdata_out.txt');
})).then(expectAsync1((c){
// print(consumer.data);
// print(data);
// print(new String.fromCharCodes(consumer.data));
// print(new String.fromCharCodes(data));
List<int> dataIn = new File('$path/gridfs_testdata_in.txt').readAsBytesSync();
List<int> dataOut = new File('$path/gridfs_testdata_out.txt').readAsBytesSync();
expect(dataOut, orderedEquals(dataIn));
Expand All @@ -168,6 +160,6 @@ main(){
test('testSmall',testSmall);
test('tesSomeChunks',tesSomeChunks);
test('testBig',testBig);
solo_test('testWithFile',testWithFile);
test('testFileToGridFSToFile',testFileToGridFSToFile);
});
}

0 comments on commit fb84a82

Please sign in to comment.