shill: CellularCapabilityUniversal: return proper technology family

Previously the CellularCapabilityUniversal class had returned
"Universal" as the technology family.  This was incorrect and resulted
in the UI not displaying options to modify the APN or manipulate SIM
locking.

BUG=none
TEST=run with LTE modems, see APN choices in UI

Change-Id: Ie3edbfac8698ba41499fc3b41de0f7934fffdb62
Reviewed-on: https://gerrit.chromium.org/gerrit/22151
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Tested-by: Jason Glasgow <jglasgow@chromium.org>
Commit-Ready: Jason Glasgow <jglasgow@chromium.org>
diff --git a/cellular_capability_universal_unittest.cc b/cellular_capability_universal_unittest.cc
index c2fd206..65b1ba3 100644
--- a/cellular_capability_universal_unittest.cc
+++ b/cellular_capability_universal_unittest.cc
@@ -570,4 +570,45 @@
   connect_callback_.Run(bearer, Error(Error::kSuccess));
 }
 
+// Validates GetTypeString and AccessTechnologyToTechnologyFamily
+TEST_F(CellularCapabilityUniversalTest, GetTypeString) {
+  const int gsm_technologies[] = {
+    MM_MODEM_ACCESS_TECHNOLOGY_LTE,
+    MM_MODEM_ACCESS_TECHNOLOGY_HSPA_PLUS,
+    MM_MODEM_ACCESS_TECHNOLOGY_HSPA,
+    MM_MODEM_ACCESS_TECHNOLOGY_HSUPA,
+    MM_MODEM_ACCESS_TECHNOLOGY_HSDPA,
+    MM_MODEM_ACCESS_TECHNOLOGY_UMTS,
+    MM_MODEM_ACCESS_TECHNOLOGY_EDGE,
+    MM_MODEM_ACCESS_TECHNOLOGY_GPRS,
+    MM_MODEM_ACCESS_TECHNOLOGY_GSM_COMPACT,
+    MM_MODEM_ACCESS_TECHNOLOGY_GSM,
+    MM_MODEM_ACCESS_TECHNOLOGY_LTE | MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
+    MM_MODEM_ACCESS_TECHNOLOGY_GSM | MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
+    MM_MODEM_ACCESS_TECHNOLOGY_LTE | MM_MODEM_ACCESS_TECHNOLOGY_EVDOA,
+    MM_MODEM_ACCESS_TECHNOLOGY_GSM | MM_MODEM_ACCESS_TECHNOLOGY_EVDOA,
+    MM_MODEM_ACCESS_TECHNOLOGY_LTE | MM_MODEM_ACCESS_TECHNOLOGY_EVDOB,
+    MM_MODEM_ACCESS_TECHNOLOGY_GSM | MM_MODEM_ACCESS_TECHNOLOGY_EVDOB,
+    MM_MODEM_ACCESS_TECHNOLOGY_GSM | MM_MODEM_ACCESS_TECHNOLOGY_1XRTT,
+  };
+  for(size_t i = 0; i < arraysize(gsm_technologies); ++i) {
+    capability_->access_technologies_ = gsm_technologies[i];
+    ASSERT_EQ(capability_->GetTypeString(), flimflam::kTechnologyFamilyGsm);
+  }
+  const int cdma_technologies[] = {
+    MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
+    MM_MODEM_ACCESS_TECHNOLOGY_EVDOA,
+    MM_MODEM_ACCESS_TECHNOLOGY_EVDOA | MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
+    MM_MODEM_ACCESS_TECHNOLOGY_EVDOB,
+    MM_MODEM_ACCESS_TECHNOLOGY_EVDOB | MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
+    MM_MODEM_ACCESS_TECHNOLOGY_1XRTT,
+  };
+  for(size_t i = 0; i < arraysize(cdma_technologies); ++i) {
+    capability_->access_technologies_ = cdma_technologies[i];
+    ASSERT_EQ(capability_->GetTypeString(), flimflam::kTechnologyFamilyCdma);
+  }
+  capability_->access_technologies_ = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
+  ASSERT_EQ(capability_->GetTypeString(), "");
+}
+
 }  // namespace shill