From d8766dd193f441c8c87c8a691aea33a2b7b1ac41 Mon Sep 17 00:00:00 2001
From: Tomas Stupka <tomas.stupka@oracle.com>
Date: Thu, 14 Dec 2017 17:27:30 +0100
Subject: [PATCH] added vector subscript tests

---
 .../truffle/r/test/ExpectedTestOutput.test    | 40 +++++++++++++++++++
 .../r/test/builtins/TestBuiltin_vector.java   | 15 ++++++-
 2 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index 68c0f9b81b..9077e09423 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -77543,6 +77543,46 @@ Error in vector(character()) : invalid 'mode' argument
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorConstructor#
 #{ x<-as.vector(3); y<-vector(length=x) }
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- as.integer(c(1, 2)); v[1]<-NA_integer_; v
+[1] NA  2
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- as.integer(c(1, 2, 3, 4)); dim(v)<-c(2,2); v[1, 1]<-NA_integer_; v
+     [,1] [,2]
+[1,]   NA    3
+[2,]    2    4
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- c('a', 'b'); v[1]<-NA_character_; v
+[1] NA  "b"
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- c('a', 'b', 'c', 'd'); dim(v)<-c(2,2); v[1, 1]<-NA_character_; v
+     [,1] [,2]
+[1,] NA   "c"
+[2,] "b"  "d"
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- c(1, 2); v[1]<-NA_integer_; v
+[1] NA  2
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- c(1, 2); v[1]<-NA_real_; v
+[1] NA  2
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- c(1, 2, 3, 4); dim(v)<-c(2,2); v[1, 1]<-NA_integer_; v
+     [,1] [,2]
+[1,]   NA    3
+[2,]    2    4
+
+##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorNASubscript#
+#v <- c(1, 2, 3, 4); dim(v)<-c(2,2); v[1, 1]<-NA_real_; v
+     [,1] [,2]
+[1,]   NA    3
+[2,]    2    4
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_vector.testVectorWithPairlist#
 #vector('pairlist', 0)
 NULL
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java
index e218f7e8d3..bd5cb7aa15 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_vector.java
@@ -4,7 +4,7 @@
  * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * Copyright (c) 2012-2014, Purdue University
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates
  *
  * All rights reserved.
  */
@@ -77,4 +77,17 @@ public class TestBuiltin_vector extends TestBase {
         assertEval("vector('pairlist', 0)");
         assertEval("vector('pairlist', 3)");
     }
+
+    @Test
+    public void testVectorNASubscript() {
+        assertEval("v <- as.integer(c(1, 2)); v[1]<-NA_integer_; v");
+        assertEval("v <- c(1, 2); v[1]<-NA_real_; v");
+        assertEval("v <- c('a', 'b'); v[1]<-NA_character_; v");
+        assertEval("v <- c(1, 2); v[1]<-NA_integer_; v");
+
+        assertEval("v <- as.integer(c(1, 2, 3, 4)); dim(v)<-c(2,2); v[1, 1]<-NA_integer_; v");
+        assertEval("v <- c(1, 2, 3, 4); dim(v)<-c(2,2); v[1, 1]<-NA_real_; v");
+        assertEval("v <- c('a', 'b', 'c', 'd'); dim(v)<-c(2,2); v[1, 1]<-NA_character_; v");
+        assertEval("v <- c(1, 2, 3, 4); dim(v)<-c(2,2); v[1, 1]<-NA_integer_; v");
+    }
 }
-- 
GitLab