content: -- Copyright (c) 2016-present, Facebook, Inc.
  -- All rights reserved.
  --
  -- This source code is licensed under the BSD-style license found in the
  -- LICENSE file in the root directory of this source tree.
  
  
  {-# LANGUAGE OverloadedStrings #-}
  
  module Duckling.PhoneNumber.AR.Corpus
    ( corpus
    , negativeCorpus
    ) where
  
  import Prelude
  import Data.String
  
  import Duckling.Locale
  import Duckling.PhoneNumber.Types
  import Duckling.Resolve
  import Duckling.Testing.Types
  
  corpus :: Corpus
  corpus =
    (testContext { locale = makeLocale AR Nothing }, testOptions, allExamples)
  
  negativeCorpus :: NegativeCorpus
  negativeCorpus = (testContext, testOptions, xs)
    where
      xs =
        [ "١٢٣٤٥"
        , "١٢٣٤٥٦٧٨٩٠١٢٣٤٥٦٧٧٧٧٧٧"
        , "١٢٣٤٥٦٧٨٩٠١٢٣٤٥٦"
        ]
  
  -- Tests include both unicode characters and equivalent unicode decimal code
  -- representation because the Arabic phone number regex is constructed with
  -- unicode decimal form.
  allExamples :: [Example]
  allExamples =
    concat
      [ examples (PhoneNumberValue "6507018887")
                 [ "٦٥٠٧٠١٨٨٨٧"
                 , "\1638\1637\1632\1639\1632\1633\1640\1640\1640\1639"
                 , "٦٥٠ ٧٠١ ٨٨٨٧"
                 , "\1638\1637\1632 \1639\1632\1633 \1640\1640\1640\1639"
                 , "٦٥٠-٧٠١-٨٨٨٧"
                 , "\1638\1637\1632-\1639\1632\1633-\1640\1640\1640\1639"
                 ]
      , examples (PhoneNumberValue "(+1) 6507018887")
                 [ "+١ ٦٥٠٧٠١٨٨٨٧"
                 , "+\1633 \1638\1637\1632\1639\1632\1633\1640\1640\1640\1639"
                 , "(+١)٦٥٠٧٠١٨٨٨٧"
                 , "(+\1633)\1638\1637\1632\1639\1632\1633\1640\1640\1640\1639"
                 , "(+١)   ٦٥٠ - ٧٠١  ٨٨٨٧"
                 , "(+\1633)    \1638\1637\1632 - \1639\1632\1633  \1640\1640\1640\1639"
                 ]
      , examples (PhoneNumberValue "(+33) 146647998")
                 [ "+٣٣ ١ ٤٦٦٤٧٩٩٨"
                 , "+\1635\1635 \1633 \1636\1638\1638\1636\1639\1641\1641\1640"
                 ]
      , examples (PhoneNumberValue "0620702220")
                 [ "٠٦ ٢٠٧٠ ٢٢٢٠"
                 ]
      , examples (PhoneNumberValue "6507018887 ext 897")
                 [ "٦٥٠٧٠١٨٨٨٧ ext ٨٩٧"
                 , "٦٥٠٧٠١٨٨٨٧ x ٨٩٧"
                 , "٦٥٠٧٠١٨٨٨٧ ext. ٨٩٧"
                 ]
      , examples (PhoneNumberValue "6507018887 ext 897")
                 [ "٦٥٠٧٠١٨٨٨٧ فرعي ٨٩٧"
                 ]
      , examples (PhoneNumberValue "(+1) 2025550121")
                 [ "+١-٢٠٢-٥٥٥-٠١٢١"
                 , "+١ ٢٠٢.٥٥٥.٠١٢١"
                 ]
      , examples (PhoneNumberValue "4866827")
                 [ "٤.٨.٦.٦.٨.٢.٧"
                 ]
      , examples (PhoneNumberValue "(+55) 19992842606")
                 [ "(+٥٥) ١٩٩٩٢٨٤٢٦٠٦"
                 ]
      ]
  