From a9d26e8eeec3453a6f5649f14a82e1cb2221b605 Mon Sep 17 00:00:00 2001 From: Edouard Tisserant Date: Wed, 2 Dec 2015 02:09:30 +0100 Subject: [PATCH] more android tests, more fixes. Still, to_stringpairlist crash. --- .../main/java/com/pep/k9/MainActivity.java | 209 +++++++++++++++++- src/gen_java_Message.ysl2 | 72 ++++-- src/jniutils.cc | 1 + src/org/pEp/jniadapter/Pair.java | 4 +- 4 files changed, 256 insertions(+), 30 deletions(-) diff --git a/androidTests/app/src/main/java/com/pep/k9/MainActivity.java b/androidTests/app/src/main/java/com/pep/k9/MainActivity.java index 432fa52..94cdfdd 100644 --- a/androidTests/app/src/main/java/com/pep/k9/MainActivity.java +++ b/androidTests/app/src/main/java/com/pep/k9/MainActivity.java @@ -14,7 +14,9 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.ArrayList; import java.util.Vector; +import java.util.Date; public class MainActivity extends AppCompatActivity { @@ -46,8 +48,8 @@ public class MainActivity extends AppCompatActivity { //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { try { - testPEpAliceBobJohn(); - //testPEpTypes(); + //testPEpAliceBobJohn(); + testPEpTypes(); } catch (Exception ex) { Log.e("PEPTEST", "##################### TEST Exception ####################",ex); @@ -58,7 +60,7 @@ public class MainActivity extends AppCompatActivity { return super.onOptionsItemSelected(item); } - private String LoadAssetAsString(String fname) throws IOException { + private byte[] LoadAssetAsBuffer(String fname) throws IOException { AssetManager assetManager = getAssets(); InputStream input; @@ -69,9 +71,14 @@ public class MainActivity extends AppCompatActivity { input.read(buffer); input.close(); - // byte buffer into a string - return new String(buffer); + // byte buffer + return buffer; + + } + private String LoadAssetAsString(String fname) throws IOException { + // byte buffer into a string + return new String(LoadAssetAsBuffer(fname)); } public void testPEpTypes() throws pEpException, IOException { @@ -83,6 +90,8 @@ public class MainActivity extends AppCompatActivity { Message msg = new Message(); + // Note : this looks like some target code, ins't it ? + // Call getter before call to getter assert msg.getDir()==null; assert msg.getId()==null; @@ -104,6 +113,196 @@ public class MainActivity extends AppCompatActivity { assert msg.getOptFields()==null; assert msg.getEncFormat()==null; + // Call setter with non-null and check getter returns the same + msg.setDir(Message.Direction.Outgoing); + assert msg.getDir()==Message.Direction.Outgoing; + + msg.setId("1234ID"); + assert msg.getId().equals("1234ID"); + + msg.setShortmsg("ShrtMsg"); + assert msg.getLongmsg().equals("ShrtMsg"); + + msg.setLongmsg("Loooooooooooooonger Message"); + assert msg.getLongmsg().equals("Loooooooooooooonger Message"); + + msg.setLongmsgFormatted(""); + assert msg.getLongmsgFormatted().equals(""); + + { + Vector attachments = new Vector(); + Blob blb = new Blob(); + blb.data = LoadAssetAsBuffer("0xC9C2EE39.asc"); + blb.filename = "0xC9C2EE39.asc"; + attachments.add(blb); + msg.setAttachments(attachments); + Vector detach = msg.getAttachments(); + Blob dblb = detach.firstElement(); + assert dblb.filename.equals(blb.filename); + assert dblb.data.equals(blb.data); + } + + { + Date now = new Date(); + + msg.setSent(now); + assert msg.getSent().equals(now); + } + + { + Date now = new Date(); + + msg.setRecv(now); + assert msg.getRecv().equals(now); + } + + { + Identity alice = new Identity(); + alice.username = "Alice Test"; + alice.address = "pep.test.alice@pep-project.org"; + alice.user_id = "111"; + alice.me = true; + alice.fpr = null; + + msg.setFrom(alice); + Identity _alice = msg.getFrom(); + + assert _alice.username.equals("Alice Test"); + assert _alice.address.equals("pep.test.alice@pep-project.org"); + assert _alice.user_id.equals("111"); + assert _alice.me == true; + assert _alice.fpr == null; + } + + { + Vector rcpts = new Vector(); + Identity alice = new Identity(); + alice.username = "Alice Test"; + alice.address = "pep.test.alice@pep-project.org"; + alice.user_id = "111"; + alice.me = true; + alice.fpr = null; + rcpts.add(alice); + + msg.setTo(rcpts); + Vector _rcpts = msg.getTo(); + Identity _alice = _rcpts.firstElement(); + + assert _alice.username.equals("Alice Test"); + assert _alice.address.equals("pep.test.alice@pep-project.org"); + assert _alice.user_id.equals("111"); + assert _alice.me == true; + assert _alice.fpr == null; + } + + { + Identity alice = new Identity(); + alice.username = "Alice Test"; + alice.address = "pep.test.alice@pep-project.org"; + alice.user_id = "111"; + alice.me = true; + alice.fpr = null; + + msg.setRecvBy(alice); + Identity _alice = msg.getRecvBy(); + + assert _alice.username.equals("Alice Test"); + assert _alice.address.equals("pep.test.alice@pep-project.org"); + assert _alice.user_id.equals("111"); + assert _alice.me == true; + assert _alice.fpr == null; + } + + { + Vector rcpts = new Vector(); + Identity alice = new Identity(); + alice.username = "Alice Test"; + alice.address = "pep.test.alice@pep-project.org"; + alice.user_id = "111"; + alice.me = true; + alice.fpr = null; + rcpts.add(alice); + + msg.setCc(rcpts); + Vector _rcpts = msg.getCc(); + Identity _alice = _rcpts.firstElement(); + + assert _alice.username.equals("Alice Test"); + assert _alice.address.equals("pep.test.alice@pep-project.org"); + assert _alice.user_id.equals("111"); + assert _alice.me == true; + assert _alice.fpr == null; + } + + { + Vector rcpts = new Vector(); + Identity alice = new Identity(); + alice.username = "Alice Test"; + alice.address = "pep.test.alice@pep-project.org"; + alice.user_id = "111"; + alice.me = true; + alice.fpr = null; + rcpts.add(alice); + + msg.setBcc(rcpts); + Vector _rcpts = msg.getBcc(); + Identity _alice = _rcpts.firstElement(); + + assert _alice.username.equals("Alice Test"); + assert _alice.address.equals("pep.test.alice@pep-project.org"); + assert _alice.user_id.equals("111"); + assert _alice.me == true; + assert _alice.fpr == null; + } + + { + Vector strvec = new Vector(); + strvec.add("Blub"); + + msg.setInReplyTo(strvec); + Vector _strvec = msg.getInReplyTo(); + + assert _strvec.firstElement().equals("Blub"); + } + + { + Vector strvec = new Vector(); + strvec.add("Blub"); + + msg.setReferences(strvec); + Vector _strvec = msg.getReferences(); + + assert _strvec.firstElement().equals("Blub"); + } + + { + Vector strvec = new Vector(); + strvec.add("Blub"); + + msg.setKeywords(strvec); + Vector _strvec = msg.getKeywords(); + + assert _strvec.firstElement().equals("Blub"); + } + + msg.setComments("No comment."); + assert msg.getComments().equals("No comment."); + + { + ArrayList> pairs = new ArrayList>(); + Pair pair = new Pair("left","right"); + pairs.add(pair); + + msg.setOptFields(pairs); + ArrayList> _pairs = msg.getOptFields(); + Pair _pair = _pairs.get(0); + assert _pair.first.equals("left"); + assert _pair.second.equals("right"); + } + + msg.setEncFormat(Message.EncFormat.PEP); + assert msg.getEncFormat()==Message.EncFormat.PEP; + // Call setter with null call to getter msg.setDir(null); assert msg.getDir()==null; diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index ca293c8..752df4f 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -107,36 +107,62 @@ tstylesheet { || - when "$ctype = 'identitylist' or $ctype = 'bloblist'" - || - `` const "ename", "substring-before(substring-after($type, '<'), '>')"; - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); - public «$type» get«$name»() { - «$type» list = new «$type»(); - for (_«$ename» i : _get«$name»()) - list.add(new «$ename»(i)); - return list; - } - public void set«$name»(«$type» value) { - if(value != null){ - «$itype» list = new «$itype»(); - for («$ename» i : value) - list.add(new _«$ename»(i)); - _set«$name»(list); - }else{ - _set«$name»(null); + when "$ctype = 'identitylist' or $ctype = 'bloblist' or $ctype = 'stringlist' or $ctype = 'stringpairlist'" + { + + const "ename", "substring-after(substring($type,1,string-length($type)-1), '<')"; + const "iename" choose { + when "$ctype = 'stringlist'" > byte[] + when "$ctype = 'stringpairlist'" > Pair + otherwise > _«$ename» + } + const "convget" choose { + when "$ctype = 'stringlist'" > AbstractEngine.toUTF16(i) + when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF16(i.first), AbstractEngine.toUTF16(i.second)) + otherwise > new «$ename»(i) } + const "convset" choose { + when "$ctype = 'stringlist'" > AbstractEngine.toUTF8(i) + when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF8(i.first), AbstractEngine.toUTF8(i.second)) + otherwise > new _«$ename»(i) + } + || + private native «$itype» _get«$name»(); + private native void _set«$name»(«$itype» value); + public «$type» get«$name»() { + «$itype» glist = _get«$name»(); + if(glist != null){ + «$type» list = new «$type»(); + for («$iename» i : glist) + list.add(«$convget»); + return list; + } + return null; + } + public void set«$name»(«$type» value) { + if(value != null){ + «$itype» list = new «$itype»(); + for («$ename» i : value) + list.add(«$convset»); + _set«$name»(list); + }else{ + _set«$name»(null); + } + } + + || } - - || - + when "$itype != $type" || private native «$itype» _get«$name»(); private native void _set«$name»(«$itype» value); public «$type» get«$name»() { - return AbstractEngine.toUTF16(_get«$name»()); + «$itype» res = _get«$name»(); + if(res != null) + return AbstractEngine.toUTF16(res); + else + return null; } public void set«$name»(«$type» value) { if(value != null) diff --git a/src/jniutils.cc b/src/jniutils.cc index 52169b5..e66e0ee 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -273,6 +273,7 @@ namespace pEp { stringpair_list_t *sl = new_stringpair_list(NULL); stringpair_list_t *_sl; jint i; + for (_sl = sl, i = 0; i < (int) size; i++) { jobject pair = callObjectMethod(env, obj, "get", i); jbyteArray first = diff --git a/src/org/pEp/jniadapter/Pair.java b/src/org/pEp/jniadapter/Pair.java index 625bcfe..5bd3f27 100644 --- a/src/org/pEp/jniadapter/Pair.java +++ b/src/org/pEp/jniadapter/Pair.java @@ -4,9 +4,9 @@ public class Pair { public F first; public S second; - Pair() { } + public Pair() { } - Pair(F f, S s) { + public Pair(F f, S s) { first = f; second = s; }