@@ -1214,6 +1214,115 @@ public void onNext(Inference i) {
1214
1214
e .printStackTrace ();
1215
1215
}
1216
1216
}
1217
+
1218
+ @ Test
1219
+ public void testMissingEncoderMap () {
1220
+ Parameters p = NetworkTestHarness .getParameters ().copy ();
1221
+ //p = p.union(NetworkTestHarness.getHotGymTestEncoderParams());
1222
+ p .setParameterByKey (KEY .RANDOM , new MersenneTwister (42 ));
1223
+ p .setParameterByKey (KEY .COLUMN_DIMENSIONS , new int [] { 2048 });
1224
+ p .setParameterByKey (KEY .POTENTIAL_RADIUS , 200 );
1225
+ p .setParameterByKey (KEY .INHIBITION_RADIUS , 50 );
1226
+ p .setParameterByKey (KEY .GLOBAL_INHIBITIONS , true );
1227
+
1228
+ // System.out.println(p);
1229
+
1230
+ Map <String , Object > params = new HashMap <>();
1231
+ params .put (KEY_MODE , Mode .PURE );
1232
+ params .put (KEY_WINDOW_SIZE , 3 );
1233
+ params .put (KEY_USE_MOVING_AVG , true );
1234
+ Anomaly anomalyComputer = Anomaly .create (params );
1235
+
1236
+ Layer <?> l = Network .createLayer ("TestLayer" , p )
1237
+ .alterParameter (KEY .AUTO_CLASSIFY , true )
1238
+ .add (anomalyComputer )
1239
+ .add (new TemporalMemory ())
1240
+ .add (new SpatialPooler ())
1241
+ .add (Sensor .create (
1242
+ FileSensor ::create ,
1243
+ SensorParams .create (
1244
+ Keys ::path , "" , ResourceLocator .path ("rec-center-hourly-small.csv" ))));
1245
+
1246
+ l .getConnections ().printParameters ();
1247
+
1248
+ l .subscribe (new Observer <Inference >() {
1249
+ @ Override public void onCompleted () {}
1250
+ @ Override public void onError (Throwable e ) { System .out .println ("error: " + e .getMessage ()); e .printStackTrace ();}
1251
+ @ Override
1252
+ public void onNext (Inference i ) {
1253
+ if (flowReceived ) return ; // No need to set this value multiple times
1254
+
1255
+ flowReceived = i .getClassifiers ().size () == 4 &&
1256
+ i .getClassifiers ().get ("timestamp" ) != null &&
1257
+ i .getClassifiers ().get ("consumption" ) != null ;
1258
+ }
1259
+ });
1260
+
1261
+ try {
1262
+ l .close ();
1263
+ fail ();
1264
+ }catch (Exception e ) {
1265
+ assertEquals ("Cannot initialize this Sensor's MultiEncoder with a null settings" , e .getMessage ());
1266
+ }
1267
+
1268
+ try {
1269
+ assertFalse (flowReceived );
1270
+ }catch (Exception e ) {
1271
+ e .printStackTrace ();
1272
+ }
1273
+
1274
+ ////////////////// Test catch with no Sensor ////////////////////
1275
+
1276
+ p = NetworkTestHarness .getParameters ().copy ();
1277
+ //p = p.union(NetworkTestHarness.getHotGymTestEncoderParams());
1278
+ p .setParameterByKey (KEY .RANDOM , new MersenneTwister (42 ));
1279
+ p .setParameterByKey (KEY .COLUMN_DIMENSIONS , new int [] { 2048 });
1280
+ p .setParameterByKey (KEY .POTENTIAL_RADIUS , 200 );
1281
+ p .setParameterByKey (KEY .INHIBITION_RADIUS , 50 );
1282
+ p .setParameterByKey (KEY .GLOBAL_INHIBITIONS , true );
1283
+
1284
+ params = new HashMap <>();
1285
+ params .put (KEY_MODE , Mode .PURE );
1286
+ params .put (KEY_WINDOW_SIZE , 3 );
1287
+ params .put (KEY_USE_MOVING_AVG , true );
1288
+ anomalyComputer = Anomaly .create (params );
1289
+
1290
+ l = Network .createLayer ("TestLayer" , p )
1291
+ .alterParameter (KEY .AUTO_CLASSIFY , true )
1292
+ .add (anomalyComputer )
1293
+ .add (new TemporalMemory ())
1294
+ .add (new SpatialPooler ())
1295
+ .add (anomalyComputer )
1296
+ .add (MultiEncoder .builder ().name ("" ).build ());
1297
+
1298
+ l .getConnections ().printParameters ();
1299
+
1300
+ l .subscribe (new Observer <Inference >() {
1301
+ @ Override public void onCompleted () {}
1302
+ @ Override public void onError (Throwable e ) { System .out .println ("error: " + e .getMessage ()); e .printStackTrace ();}
1303
+ @ Override
1304
+ public void onNext (Inference i ) {
1305
+ if (flowReceived ) return ; // No need to set this value multiple times
1306
+
1307
+ flowReceived = i .getClassifiers ().size () == 4 &&
1308
+ i .getClassifiers ().get ("timestamp" ) != null &&
1309
+ i .getClassifiers ().get ("consumption" ) != null ;
1310
+ }
1311
+ });
1312
+
1313
+ try {
1314
+ l .close ();
1315
+ fail ();
1316
+ }catch (Exception e ) {
1317
+ assertEquals ("No field encoding map found for specified MultiEncoder" , e .getMessage ());
1318
+ }
1319
+
1320
+ try {
1321
+ assertFalse (flowReceived );
1322
+ }catch (Exception e ) {
1323
+ e .printStackTrace ();
1324
+ }
1325
+ }
1217
1326
1218
1327
private Parameters getArrayTestParams () {
1219
1328
Map <String , Map <String , Object >> fieldEncodings = setupMap (
0 commit comments