OSDN Git Service

2010-07-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Jul 2010 14:21:10 +0000 (14:21 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Jul 2010 14:21:10 +0000 (14:21 +0000)
PR libfortran/37077
* gfortran.dg/char4_iunit_2.f03: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162261 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/char4_iunit_2.f03 [new file with mode: 0644]

index 0a98f07..1333f3f 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libfortran/37077
+       * gfortran.dg/char4_iunit_2.f03: New test.
+
 2010-07-16  Iain Sandoe  <iains@gcc.gnu.org>
 
        * lib/plugin-support.exp (plugin-test-execute):
 2010-07-16  Iain Sandoe  <iains@gcc.gnu.org>
 
        * lib/plugin-support.exp (plugin-test-execute):
diff --git a/gcc/testsuite/gfortran.dg/char4_iunit_2.f03 b/gcc/testsuite/gfortran.dg/char4_iunit_2.f03
new file mode 100644 (file)
index 0000000..0743212
--- /dev/null
@@ -0,0 +1,47 @@
+! { dg-do run }
+! PR37077 Implement Internal Unit I/O for character KIND=4
+! Test case prepared by Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+program char4_iunit_2
+  implicit none
+  integer, parameter :: k = 4
+  character(kind=4,len=80) :: widestring, str_char4
+  character(kind=1,len=80) :: skinnystring
+  integer :: i,j
+  real :: x
+  character(9) :: str_default
+
+  widestring = k_"12345 2.54360 hijklmnop qwertyuiopasdfg"
+  skinnystring = "12345 2.54360 hijklmnop qwertyuiopasdfg"
+  i = 77777
+  x = 0.0
+  str_default = "xxxxxxxxx"
+  str_char4 = k_"xyzzy"
+  read(widestring,'(i5,1x,f7.5,1x,a9,1x,a15)') i, x, str_default, str_char4
+  if (i /= 12345 .or. (x - 2.5436001) > epsilon(x) .or. &
+      str_default /= "hijklmnop" .or. str_char4 /= k_"qwertyuiopasdfg")&
+      call abort
+  i = 77777
+  x = 0.0
+  str_default = "xxxxxxxxx"
+  str_char4 = k_"xyzzy"
+  read(widestring,'(2x,i4,tl3,1x,f7.5,1x,a9,1x,a15)')i, x, str_default,&
+       str_char4
+  if (i /= 345 .or. (x - 52.542999) > epsilon(x) .or. &
+      str_default /= "0 hijklmn" .or. str_char4 /= k_"p qwertyuiopasd")&
+      call abort
+  read(skinnystring,'(2x,i4,tl3,1x,f7.5,1x,a9,1x,a15)')i, x, str_default,&
+   str_char4
+  if (i /= 345 .or. (x - 52.542999) > epsilon(x) .or. &
+      str_default /= "0 hijklmn" .or. str_char4 /= k_"p qwertyuiopasd")&
+      call abort
+  write(widestring,'(2x,i4,tl3,1x,f10.5,1x,a9,1x,a15)')i, x, str_default,&
+   trim(str_char4)
+  if (widestring .ne. k_"   3  52.54300 0 hijklmn p qwertyuiopasd") call abort
+  write(skinnystring,'(2x,i4,tl3,1x,f10.5,1x,a9,1x,a15)')i, x, str_default,&
+   trim(str_char4)
+  if (skinnystring .ne. "   3  52.54300 0 hijklmn p qwertyuiopasd") call abort
+  write(widestring,*)"test",i, x, str_default,&
+   trim(str_char4)
+  if (widestring .ne. &
+    k_" test         345   52.542999     0 hijklmnp qwertyuiopasd") call abort
+end program char4_iunit_2